首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

收到数据的客户端socket句柄,是不是"有信号"的内核对象,能让WaitForXXX函数返回?解决方案

2012-03-08 
收到数据的客户端socket句柄,是不是有信号的内核对象,能让WaitForXXX函数返回?我写了一对简单的socket服

收到数据的客户端socket句柄,是不是"有信号"的内核对象,能让WaitForXXX函数返回?
我写了一对简单的socket服务器/客户端程序,可以很好的工作。
然后我对客户端做了一点小的修改,原来的代码是

C/C++ code
    while(1){        char buf[10]={0};        if(0>=recv(hClient,buf,10,0)){            printf("recv error\n");            break;        }        printf("received %s\n",buf);    }

没有问题,然后我改成了:
C/C++ code
    while(1){        char buf[10]={0};        DWORD ret=WaitForMultipleObjects(1,(LPHANDLE)&hClient,FALSE,INFINITE);        if(ret==WAIT_OBJECT_0){            if(0>=recv(hClient,buf,10,0)){                printf("recv error\n");                break;            }            printf("received %s\n",buf);        }    }


发现现在不行了,WaitForMultipleObjects()函数调用,并没有返回,死在那里
-------------------------------------------------
我的疑问在于:
  既然一个Socket句柄已经得到了数据,那么这个内核对象就处于"有信号"的状态吧,应该就能使得WaitXXX函数返回啊。
我是不是理解错了概念,还是函数参数填的有问题?

各位windows编程高手帮我看看!

[解决办法]
SOCKET不算是内核对象
[解决办法]
可以用事件选择网络模型

热点排行