MSDN表示框架将调用OnRecevie,以通知此套接字缓冲区中有数据,可以通过调用接收成员函数来检索这些数据。如果在OnRecieve运行时可以检索数据,会发生什么情况?
发布于 2015-04-24 00:55:48
下一个OnReceive()不会在中间调用,因为所有的处理都是在同一个线程中完成的。在内部,这是通过CSocketWnd中的消息泵完成的。如果您认为还有另一块数据正在传输中,那么可以在OnReceive()的末尾手动调用AsyncSelect()。
发布于 2015-04-24 01:33:21
调用接收之后,如果有更多的数据可用,winsock会向你的消息队列发送一条新消息。这将导致每当您的应用程序恢复发送消息时都会调用OnReceive。这通常是在您从OnReceive返回之后。
但也有一个例外。如果您在从OnReceive返回之前发送消息(例如,通过调用MessageBox),那么当您还在OnReceive中时,就可以调用OnReceive。所以不要发送消息!
https://stackoverflow.com/questions/29828901
复制相似问题