c++ - 接收到 RST 和 socket close 后读取数据

标签 c++ sockets quickfix

我在一个开源应用程序 (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/

相关文章:

c++ - 直接调用非静态方法

c++ - 解析数据,scanf?

c - 从套接字描述符获取IP地址?

c - 如何在不使用 sockaddr_ll 的情况下使用 sendto 通过原始以太网套接字发送数据?

c++ - 运行快速修复引擎

javascript - Google 的 V8 引擎真的限制每个进程 1 个 VM 吗?

c++ - 具有 DirectX 桌面框架的消费者-生产者线程

Java SE 套接字输入流未得到响应

java - 如何从quickfixj FIX.4.2执行报告中检索标签值

java - 如何在 quickfixj 中动态地就 SenderCompID 和 TargetCompID 达成一致?