WinSock的recv返回值处理

今天在调试程序的时候发现,客户端调用closesocket时,服务器应该会返回SOCKET_ERROR,实际上Debug版本是这样,但Release版本并不是。相同的代码Debug返回了-1,Release返回了0。

通过看msdn的原文可以发现:

If no error occurs, recv returns the number of bytes received and the buffer pointed to by the buf parameter will contain this data received. If the connection has been gracefully closed, the return value is zero.Otherwise, a value of SOCKET_ERROR is returned

意思是:如果没有错误,将返回接收到的字节数。如果优雅的关闭了套接字,会返回0。否则返回SOCKET_ERROR,也就是-1。

所以在处理断线的时候判断返回值小于等于0即可。(而不是有些人写的判断等于SOCKET_ERROR)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值