再SOCKET连接中,我用closesocket正常断开一方连接,另一方recv接收数据,为何返回的长度不是0而是-1呢?

zyzgcy 2004-05-09 04:36:44
再SOCKET连接中,我用closesocket正常断开一方连接,另一方recv接收数据,为何返回的长度不是0而是-1呢?
我用的阻塞SOCKET,用SELECT判断有数据到达后再调用RECV函数.
...全文
113 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ooio 2004-06-17
  • 打赏
  • 举报
回复
如果只关闭一方的连接,不能使用closesocket,应该使用shutdown!
COM_MOC 2004-06-09
  • 打赏
  • 举报
回复
recv之后,调用 WSAGetLastError() 可以得到错误号。
gaoxianfeng 2004-06-09
  • 打赏
  • 举报
回复
断开后 整个此连接的协议栈变成等待close
接收数据在此时的连接上接收数据
会返回错误
协议栈收到关闭连接数据报会唤醒上层的阻塞调用
SwordLv 2004-06-08
  • 打赏
  • 举报
回复
我曾经出现过 recv返回-1的情况,原因是我发送的数据大于我接收的buffer,你可以看看是不是这方面的错.
hatecoding 2004-06-08
  • 打赏
  • 举报
回复
recv返回-1表示socket已经出错

你关闭socket后,socket已经关闭,对断开的socket调用recv肯定是返回-1.

4,358

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧