为什么把 Connect 放在 WSAEventSelect 语句的后面就会出现 10035 错误!!
而放在WSAEventSelect 的前面就不会!!! 问题点数:50、回复次数:17Top
1 楼kingzai(stevenzhu)回复于 2005-01-02 21:21:58 得分 10
10035 即WSAEWOULDBLOCK The socket is marked as nonblocking and the requested operation would block
放在前面是同步和阻塞模式,不会产生这个错误
当放在后面,是异步模式,你去getlasterror当然会得到这个错误。Top
2 楼summax(夏天的冰)回复于 2005-01-02 21:32:08 得分 0
不是啊.我放在后面是设用 Connect 时.返回 SOCKET_ERROR 啊!!但是我发现其实已经连接成功!!Top
3 楼kingzai(stevenzhu)回复于 2005-01-02 21:35:29 得分 10
connect是阻塞的,WSAEventSelect 放前面会设置成异步,差别就在这里。10035 你是从哪得到的?Top
4 楼summax(夏天的冰)回复于 2005-01-02 21:37:51 得分 0
我是用 Connect 等于 SOCKET_ERROR 后 调用 WSAGetLastError 得到的.Top
5 楼summax(夏天的冰)回复于 2005-01-02 21:43:12 得分 0
1.建立Socket套接字
2.绑定套接字到指定IP
3.调用WSAEventSelect 将套接字设置为事件对象模型
4.调用Connect连接服务器时返回SOCKET_ERROR 错误,调用WSAGetLastError 得到 10035
但是把 3 4 条位置对调就没事。
如查 3,4对调服务器断开连接到客户端能得到事件通知。而客户端断开连接后服务端却不能得到事件通知。
如果不对调连接服务器成功,只是调用WSAGetLastError 会得到 10035错误,但是客户和服务双方断开连接,双方都能收到事件通知!!Top
6 楼summax(夏天的冰)回复于 2005-01-02 21:45:38 得分 0
我想应该是Connect阻塞的原因。那我用什么函数过连接服务器呢?Top
7 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2005-01-02 22:11:46 得分 10
报告WSAEWOULDBLOCK是正常的,因为建立一个连接必须花费一些时间Top
8 楼oyljerry(【勇敢的心】→ ㊣提拉米苏√㊣)回复于 2005-01-02 22:12:46 得分 0
非阻塞上不能立即完成时会产生这个错误,需要时间等待Top
9 楼summax(夏天的冰)回复于 2005-01-02 22:20:07 得分 0
需要多长时间??我已经等了 1分钟了。服务端可是在本地!Top
10 楼nuaawenlin(飘人)回复于 2005-01-03 21:45:32 得分 10
WSAEventSelect之后,socket变成了异步,是不杜塞的,你connect马上返回,而这个时候还没有联上服务器而着成WSAEWOULDBLOCKTop
11 楼summax(夏天的冰)回复于 2005-01-04 09:11:29 得分 0
那我如何判断我连上服务器没有了呢?Top
12 楼anyiflyer(代码在我心中!)回复于 2005-01-04 12:18:46 得分 10
返回 10035表示没有问题了,已经连接上服务器了,因为默认情况下是阻塞的,WSAEventSelect(WSAsyncSlect)之后,socket变成了异步,所以才返回这个错误,当然是在连接成功的情况下!这可以当作一个警告错误而不用处理,甚至可以根据返回值是不是10035来判断是否连接成功了.Top
13 楼leaber(鹤舞白沙)回复于 2005-01-04 13:30:52 得分 0
顶一下Top
14 楼summax(夏天的冰)回复于 2005-01-04 13:34:50 得分 0
to: anyiflyer(燕子飞了,我爱谁?)
可是我没有打开服务端.而用客户端连接.也返回的是10035错误.也就是说.连没连上客户端没法判断了.还有如果我关闭了客户端的Socket套接字.而服务端却没有收到客户端套接字关闭的事件通知.Top
15 楼sharkhuang(走吧走吧!人总会慢慢长大~)回复于 2005-01-04 15:26:58 得分 0
connect是阻塞模式Top
16 楼summax(夏天的冰)回复于 2005-01-06 12:14:38 得分 0
ding...Top
17 楼AntonlioX(做人要厚道)回复于 2005-07-02 02:38:07 得分 0
markTop




