数据处于“待决状态”的理解?
- C/C++ code
while(1) { ret = recv(sock,szbuff,1024,0); if(ret == 0) break; else if(ret == SOCKET_ERROR) { cout << "recv() failed " << WSAGetLastError() << endl; break; } szbuff[ret] = '\0'; cout << "recv " << szbuff << " " << ret << "bytes" << endl; }
这段代码的问题在于,假如没有数据处于“待决”状态,那么 r e c v函数可能永远都无法返回。
------------------------------------
以上是windows网络编程书上的原话,我是这么理解的,提供给recv函数的反冲区要从协议的反冲区中读点数据后,recv才会返回,而这个“待决”状态就是说你现在可以读了,没有数据处于“待决”状态就是说读不了数据,这有可能是协议或者说套接口的反冲区里没有数据,或者说数据没有达到足够的字节数量所以不让读入到提供的反冲区中
不知道是不是这个意思。。。
[解决办法]
就是没数据可读
[解决办法]
没数据当然阻塞在那了 要不死循环
[解决办法]
这段代码的问题在于,假如没有数据处于“待决”状态,那么 r e c v函数可能永远都无法返回。
----------------
待决,你可以从字面意思来理解就是数据已经准备好,等待处理了。 :)
[解决办法]
[解决办法]
待据:就是等待解决的收据