I
iamrich
Unregistered / Unconfirmed
GUEST, unregistred user!
我用iocp做了一个客户端,连接服务器的时候上传文件,当上传完成时候用
shutdown(mSocket,1) 报错,错误代码10057
实际上这个 socket 根本没有关闭,还是在连接状态中的
如果是同步socket就是正常的。。为什么用 overlapped就会这样呢?
我的流程如下
1. connectEx...
2. 在线程中得到 connect 成功的消息
3. 然后WSASend, 一个16k的buffer, 给服务器
4. 在线程中得到 WSASend的完成通知,这个时候我 shutdown(msocket), 就得到了10057错误
因为 shutdown之后还要调用closesocket, 这样就导致了不是优雅的关闭,从而服务器没有正确收到数据,如果在WSASend的完成通知后用DisconnectEx,一切顺利,可是 W2000不支持 DisconnectEx啊
shutdown(mSocket,1) 报错,错误代码10057
实际上这个 socket 根本没有关闭,还是在连接状态中的
如果是同步socket就是正常的。。为什么用 overlapped就会这样呢?
我的流程如下
1. connectEx...
2. 在线程中得到 connect 成功的消息
3. 然后WSASend, 一个16k的buffer, 给服务器
4. 在线程中得到 WSASend的完成通知,这个时候我 shutdown(msocket), 就得到了10057错误
因为 shutdown之后还要调用closesocket, 这样就导致了不是优雅的关闭,从而服务器没有正确收到数据,如果在WSASend的完成通知后用DisconnectEx,一切顺利,可是 W2000不支持 DisconnectEx啊