Delphi Synapse TUDPBlockSocket RecvPacket返回10054

时间:2017-05-11 07:03:32

标签: delphi udp synapse

请帮助我了解正在发生的事情。

什么可能意味着获得10054"连接重置由同行"执行TUDPBlockSocket的RecvPacket时出错?

这很少发生在服务器端。与此同时,我看到10060" Connection超时"在客户方面。

我完全不明白这是怎么回事,因为udp在没有连接设置的情况下工作。并且RecvPacket函数应该返回已经收到的数据包。

服务器代码:

 FServerSock := TUDPBlockSocket.Create;
 FServerSock.Bind('0.0.0.0', IntToStr(Port));

....
s := FServerSock.RecvPacket(10);
if ((FServerSock.LastError <> 0) and (FServerSock.LastError <> 10060)) then
  Begin
    Log.AddError(FServerSock.LastErrorDesc); //<--10054 found here
  end
else   
  Begin
      if (s <> '') then
        Begin
          FServerSock.SendString('ack');
          ...
        end;
  end 

客户代码:

  FUDP.Connect(ServerHost, IntToStr(ServerPort));
  if (FUDP.LastError = 0) then
    Begin
      FUDP.SendString(AStr);
      if (FUDP.LastError = 0) then
        Begin
          s := FUDP.RecvPacket(5000);
          if (FUDP.LastError = 0) then
            Begin
              result := (s = 'ack');

0 个答案:

没有答案