请帮助我了解正在发生的事情。
什么可能意味着获得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');