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才会返回,而这个“待决”状态就是说你现在可以读了,没有数据处于“待决”状态就是说读不了数据,这有可能是协议或者说套接口的反冲区里没有数据,或者说数据没有达到足够的字节数量所以不让读入到提供的反冲区中
不知道是不是这个意思
解决方案 »
- 用过geos的请进
- 关于VC开发一个上位机软件的难题,困惑很长时间了,请大神抽出一点时间帮帮我!
- 能不能使用CreateDIBSection创建一个与当前设备颜色格式匹配的位图
- 没分了,问个问题,关于ie的cache
- 那儿不对????
- 谁有串口升级程序的示例吗?
- 视图窗口输出数据问题
- 如何通过调用dll创建MFC对话框
- 对话框的ID问题!请高手指点!!多谢!!!
- 请问combobox控件的消息WM_DROPDOWN,WM_EDITUPDATA,WM_EDITCHANGE的作用和什么事件发生
- MFC 重载打开窗口
- vc++用ADO连接ACCESS数据源失败,错误提示:未指定的错误,求大侠指点下呀。
----------------
待决,你可以从字面意思来理解就是数据已经准备好,等待处理了。 :)