收到RST和套接字关闭后读取数据

时间:2012-09-18 11:26:29

标签: c++ sockets quickfix

我在尝试读取发送到定义端口上的套接字的数据时,在开源应用程序(quickfix 1.13.3)中遇到问题。

当服务器发送数据并在其后关闭套接字时,会出现问题。 然后我的代码无法读取最后发送的数据,并抛出10054错误。 请注意,如果服务器没有关闭套接字,我将能够正常接收。

这是我用来从服务器接收数据的代码,等待你的帮助;

int size = recv( m_socket, m_buffer, sizeof(m_buffer), 0 );

请注意,如果我使用TCPClient接收数据它可以正常工作,但这将导致创建另一个quickfix应用程序,这意味着数月的艰苦工作会丢失,并且需要更多的月份来创建类似于quickfix的应用程序。

1 个答案:

答案 0 :(得分:0)

如果服务器导致发送RST,则语义意图是丢失飞行中的任何数据。服务器通常没有业务这样做。问题在于此。除了可能使用更大的套接字接收缓冲区来改变窗口并且读取速度更快之外,你无法在客户端做任何事情。