Why I always get WSAETIMEDOUT error in this code :
var fUDPBuf: array [1..UdpPacketSize] of byte; {...} UDPSocket := TUDPBlockSocket.Create; UDPSocket.Bind(UDPIP, UDPPort); if UDPSocket.LastError = 0 then Raise EDevFail.Create(Format(SPortFailed, [UDPPort])); while not Terminated do begin BytesRead := UDPSocket.RecvBufferEx(@fUDPBuf[1], UdpPacketSize, 1000); if BytesRead <= 0 then case UDPSocket.LastError of 0, WSAETIMEDOUT: Continue; WSAECONNRESET, WSAENETRESET, WSAENOTCONN, WSAECONNABORTED, WSAENETDOWN: begin Raise EDevFail.Create(UDPSocket.GetErrorDesc(UDPSocket.LastError)); UDPSocket.CloseSocket; end; else begin Raise EDevFail.Create(UDPSocket.GetErrorDesc(UDPSocket.LastError)); UDPSocket.CloseSocket; end; end; //Sleep(1); ProcessData(@fUDPBuf[1]); inc(PacketCount); end;
I’m sure that I receive UDP data from e network device as much as UdpPacketSize.
I solved my problem 🙂
must be
And
must be
For to check IP address where data come from