您的位置:程序门 -> vc/mfc -> 网络编程



请教一个非阻塞socket在connect后select的问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


请教一个非阻塞socket在connect后select的问题[已结贴,结贴人:taogenxian123]
发表于:2007-07-22 18:06:28 楼主
我创建了一个非阻塞的socket,随即connect到一个地址端口,成功了。(因为服务器那边接到了连接)在随后循环调用select来判断这个socket是否在read   write   set里。

第一次select       write   set通过,   read   set没通过,这是正常的,说明连接成功了。

随后的select就出现了问题,都是write   set   read   set   同时通过。而recv得到的数据长度是0,事实上也没有给他发数据。   sdk里说这是连接断了,可我获得连接时间依然在递增, <unix网络编程> 里说同时通过这两个set是有错误发生,而我调用getlasterror     getpeername都没有错。  

我也不知道这是正确现象否,希望哪位高人能指点一二。先谢过
发表于:2007-07-23 13:01:361楼 得分:40
根据我的经验,当网络连接断开的时候,在上边的设置的接收和发送事件都将触发。但是接收发送的字节数为0。取得网络错误的函数windows下是wsagetlasterror(),unix下我不清楚。你检查下。
发表于:2007-07-23 20:09:262楼 得分:0
先谢谢楼上的。我就是在win32下,   wsagetlasterror   没有错,而且通过api获得的连接时间也在递增,似乎连接并没有断
发表于:2007-07-24 09:33:113楼 得分:10
貌似不是这里的错误,你可以单步调试下
发表于:2007-07-24 21:00:574楼 得分:0
问题已解决,确如big_stone()   所说,服务器程序判断分支出现了错误,把连接关闭了。

谢谢两位的回答


快速检索

最新资讯
热门点击