初めまして。
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;
1番考えられるのは送信していないって事なんですが
OnClientRead が発生しないデータを送信した際の
Socket.SendBuf( SendDat[0], SendLen );
で送信している内容を確認してみましたか?
パケットを確認して、送信側のPCで実際に送信されているのか、
受信側で受信されているのかを確認するものいいかもしれません
> で送信している内容を確認してみましたか?
パケットが流れている事は確認済みです。
とりあえず、クライアント側でレスポンスが返ってこない場合、一旦
コネクションを切断し、再接続する形でお茶を濁しておきます。。。
ツイート | ![]() |