我在一个开源应用程序 (quickfix 1.13.3) 中遇到问题,同时尝试读取发送到定义端口上的套接字的数据。
当服务器发送数据并在它之后关闭套接字时,就会出现问题。 然后我的代码无法读取上次发送的数据,并抛出 10054 错误。 请注意,如果服务器不关闭套接字,我可以正常接收。
这是我用来从服务器接收数据的代码,等待您的帮助;
int size = recv( m_socket, m_buffer, sizeof(m_buffer), 0 );
请注意,如果我使用 TCPClient 接收数据,它工作得很好,但这将导致创建另一个 quickfix 应用程序,这意味着数月的辛勤工作将付诸东流,而更多的时间将用于创建类似于 quickfix 的应用程序。
最佳答案
如果服务器导致发送 RST,语义意图是丢失任何传输中的数据。服务器通常无权这样做。问题就在那一端。除了可能使用更大的套接字接收缓冲区来改变窗口并加快读取速度之外,您在客户端无能为力。
关于c++ - 接收到 RST 和 socket close 后读取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12476087/