我的一个客户工作站上有一个奇怪的问题。我有一个简单的应用程序,通过网络在两个端点之间交换一些数据。
基本上交易是这样的:
- 客户端 A 侦听传入连接
- 客户端 B 连接到 A 并发送一些数据
- 客户端 A 读取此数据以进行进一步处理
现在奇怪的是客户端 A 没有接收到全部数据(有时它是缓冲区的一部分,有时它是空的)。
A客户端使用WSAEventSelect函数,等待FD_READ读取B发送的数据,等待FD_CLOSE检测断开连接。
通常(除了这个特定的客户端之外,每次都会发出 FD_READ 信号,处理数据,然后发出 FD_CLOSE 信号,一切都很好,但在这里,FD_READ 我收到了 FD_CLOSE。
有人能告诉我这是怎么可能的吗?另一件事是该程序运行了大约一年,然后突然崩溃了。