1
在嘗試讀取發送到定義端口上套接字的數據時,我在開源應用程序(quickfix 1.13.3)中遇到問題。在接收到RST和套接字關閉後讀取數據
當服務器發送數據並在其後關閉套接字時,會發生此問題。 然後我的代碼無法讀取上次發送的數據,並引發10054錯誤。 請注意,如果服務器未關閉套接字,我能夠正常接收數據。
這是我用來從服務器接收數據的代碼,等待你的幫助;
int size = recv(m_socket, m_buffer, sizeof(m_buffer), 0);
需要注意的是,如果我使用的TcpClient接收它工作得很好的數據,但是這將導致創建另一個的quickfix應用程序,這意味着幾個月的艱苦工作迷路多月來創建一個類似的quickfix的應用程序。
如果存在要接收的數據,那麼當連接關閉時,您不應該一次收到錯誤。 –
另外,如果你得到錯誤'10054'('WSAECONNRESET'),那麼這是一個跡象表明另一個沒有以很好的方式關閉套接字。檢查服務器端的日誌以查看發生了什麼。 –
我確定有數據可以讀取,正如我所說我能夠使用tcpclient讀取它,並且是服務器沒有以很好的方式關閉套接字,服務器發送RST並關閉套接字 – user1680066