很奇怪的recv()返回值
......
int nTemp = ::recv(sk,pBuffer,dwSize,NULL);
if(nTemp == SOCKET_ERROR)//读到数据失败
{
char szMsg[100] = {NULL};
::strcat(szMsg," error id:");
::itoa(::WSAGetLastError(),szMsg+strlen(szMsg),10);
::OutputDebugString(szMsg);
}
......
显示结果:
error id:997
也就是说返回“重叠 I/O 操作在进行中。”
怎么可能呢???
我在读取之前是用WSARecv()进行读取的,采用了重叠模型的完成例程进行的,
但是没有读取完需要的数据,所以用recv继续读取,可以有些时候返回了上面的错误。
郁闷不已......
问题点数:20、回复次数:6Top
1 楼younggle(洋溢)回复于 2005-06-02 11:07:24 得分 5
把代码贴全一点。Top
2 楼nuaawenlin(飘人)回复于 2005-06-02 11:50:01 得分 5
代码帖出来,不知道你怎么判断数据没有读完的????Top
3 楼studynetwork(network)回复于 2005-06-02 12:40:56 得分 0
就是第一个标识数据长度,二个字节,然后根据长度读数据,我用
WSARecv()异步时只设置了100个字节,所以不够再读,可是就出现了这种情况。Top
4 楼studynetwork(network)回复于 2005-06-03 12:53:19 得分 0
???Top
5 楼aiyue2010(亚伦)回复于 2005-06-03 13:21:52 得分 5
建议你把代码贴出来,你这样描述不是特别清楚Top
6 楼xxrl(孔曰成仁,孟曰取媳妇-->她太有才了)回复于 2005-06-06 08:16:16 得分 5
代码完整一点 我们好诊断》。。。Top




