ServerSocketで、OnClientReadイベントが発生しなくなる


鶴っこ  2007-11-30 04:21:15  No: 28758

初めまして。
Delphi5(UP1)で開発されたプログラムの保守を行っている、鶴っこと申
します。  以後、よろしくお願い致します。

さっそくですが、現在、原因不明な現象が発生しており悩んでいます。
ヒントになるような情報がありましたら、ご教授頂願います。

かなり省略していますが、下記の様なコードで問題なく送受信を行えて
いるのですが、たまに、相手側はリクエスト電文を送信しているにも関
わらず、OnClientReadイベントが発生しなくなる場合があります。
考えられる原因は何でしょうか?

procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); 
  RecvDat  array[0..65536] of byte;
  SendDat  array[0..65536] of byte;
  SendLen  Integer;
begin
  if Socket.ReceiveLength <= 0 then    exit;

  Socket.ReceiveBuf(RecvDat[0], Socket.ReceiveLength);
  ・・・(リクエスト電文の内容により、レスポンス電文編集)・・・
  Socket.SendBuf( SendDat[0], SendLen );

end;


KHE00221  2007-12-03 18:51:29  No: 28759

1番考えられるのは送信していないって事なんですが

 OnClientRead が発生しないデータを送信した際の 

 Socket.SendBuf( SendDat[0], SendLen );

 で送信している内容を確認してみましたか?

パケットを確認して、送信側のPCで実際に送信されているのか、
受信側で受信されているのかを確認するものいいかもしれません


鶴っこ  2007-12-05 01:38:34  No: 28760

> で送信している内容を確認してみましたか?

パケットが流れている事は確認済みです。

とりあえず、クライアント側でレスポンスが返ってこない場合、一旦
コネクションを切断し、再接続する形でお茶を濁しておきます。。。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加