为什么收到FD_READ消息了,却读不到数据?
我用的是TCP协议,非阻塞方式。客户端向服务端发送一个数据包,服务端的一个窗口会收到FD_READ消息,然后我用recv把数据收了。一切正确。
可是问题就在于:服务端数据收完以后(长度也和客户端发送的一样),却马上又收到一个FD_READ消息,而此时客户端并没有发送任何数据。
我用select检测了一个,居然结果还是:这个套接字,是可读的。但是用recv来收数据,却返回Socket_error,然后调用WSAGetlasterror(),返回WSAEWOULDBLOCK,这意味着,接收缓冲区无数据可收。
真是奇怪,客户端只发一个数据包,服务端也收了这个数据包,一切正确。可是服务端收完这个数据包以后,却又收到一个FD_READ消息,而客户端并没有。而且用select来检测,发现它是可读的。而真正收的话,又收不到数据,显示接收缓冲区空。
这是怎么回事?
可是问题就在于:服务端数据收完以后(长度也和客户端发送的一样),却马上又收到一个FD_READ消息,而此时客户端并没有发送任何数据。
我用select检测了一个,居然结果还是:这个套接字,是可读的。但是用recv来收数据,却返回Socket_error,然后调用WSAGetlasterror(),返回WSAEWOULDBLOCK,这意味着,接收缓冲区无数据可收。
真是奇怪,客户端只发一个数据包,服务端也收了这个数据包,一切正确。可是服务端收完这个数据包以后,却又收到一个FD_READ消息,而客户端并没有。而且用select来检测,发现它是可读的。而真正收的话,又收不到数据,显示接收缓冲区空。
这是怎么回事?
...全文
相关推荐
FD_SET Select函数使用
`select`函数允许程序同时等待多个文件描述符(FD)上的事件,如读就绪、写就绪或异常。这种技术对于创建高效的服务器程序特别有用,因为它可以处理多个客户端连接。
CAN FD介绍(Vector)
此外,CAN消息还包含超过50%的开销,远高于其他协议,例如以太网UDP协议的开销大约为64字节,而FlexRay协议的开销为8字节。什么是CAN FD?
FD_Spank
"FD_Spank"是一个与字体设计相关的主题。在IT行业中,字体设计是用户体验和视觉传达的重要组成部分。FD_Spank可能是指一种特定的字体库或者字体设计工具,用于创建独特且引人注目的文本样式。
TC265_CAN_FD_例程
`Cpu0_Main_CANFD_Gateway.c`和`Cpu0_Main_CANFD_RX.c`是CAN FD相关的接收和网关功能实现,而`Cpu0_Main_CAN_RX.c`则处理标准CAN消息的接收
can2.0_can_fd.7z
《can_fd_spec.pdf》可能包含CAN FD的具体规范和详细技术参数,包括帧格式、错误检测机制、传输速率的变化以及如何在现有的CAN 2.0网络中集成CAN FD节点等。


网络编程
