社区
通信技术
帖子详情
再SOCKET连接中,我用closesocket正常断开一方连接,另一方recv接收数据,为何返回的长度不是0而是-1呢?
zyzgcy
2004-05-09 04:36:44
再SOCKET连接中,我用closesocket正常断开一方连接,另一方recv接收数据,为何返回的长度不是0而是-1呢?
我用的阻塞SOCKET,用SELECT判断有数据到达后再调用RECV函数.
...全文
113
5
打赏
收藏
再SOCKET连接中,我用closesocket正常断开一方连接,另一方recv接收数据,为何返回的长度不是0而是-1呢?
再SOCKET连接中,我用closesocket正常断开一方连接,另一方recv接收数据,为何返回的长度不是0而是-1呢? 我用的阻塞SOCKET,用SELECT判断有数据到达后再调用RECV函数.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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.
socket
编程
中
应用
recv
判断
连接
已
断开
在网络编程
中
,经常会检测网络的
连接
情况,进而进行下面的动作。在Linux的
socket
编程
中
,有一种非常方便的方法,来判断对方是否
断开
了
连接
,就是使用
recv
函数。如果发送端主动关闭传输,或是发送端主动关闭了
连接
后,
recv
最终会
返回
0.利用这个特性,可以用
recv
返回
0来进行发送方
断开
连接
的判断。在APUE
中
,对
recv
的表述如下,
linux C语言
socket
如何判断
socket
_fd对应的
socket
是否
断开
?(是否连通、是否正常
连接
)
recv
()、tcp_info TCP_ESTABLISHED、keepalive
文章目录判断
socket
连接
断开
的方法法一法二法三法四说明有关SO_KEEPALIVE的三个参数详细解释如下法五 判断
socket
连接
断开
的方法 法一 当
recv
()
返回
值小于等于0时,
socket
连接
断开
。但是还需要判断 errno是否等于 EINTR,如果errno == EINTR 则说明
recv
函数是由于程序接收到信号后
返回
的,
socket
连接
还是正常的,不应
close
掉
socket
连接
。 法二 struct tcp_info info; int len=sizeof(info); getsocko
解决:阻塞
socket
连接
成功情况下
recv
返回
值为-1
asd
判断
socket
连接
断开
的方法
判断
socket
连接
断开
的方法 法一: 当
recv
()
返回
值小于等于0时,
socket
连接
断开
。但是还需要判断 errno是否等于 EINTR,如果errno == EINTR 则说明
recv
函数是由于程序接收到信号后
返回
的,
socket
连接
还是正常的,不应
close
掉
socket
连接
。 法二: struct tcp_info info; int len=sizeof(info)...
python
socket
.
recv
() 一直不停的
返回
空字符串,客户端怎么判断
连接
被
断开
?
python
socket
.
recv
() 一直不停的
返回
空字符串,客户端怎么判断
连接
被
断开
?
通信技术
4,358
社区成员
28,927
社区内容
发帖
与我相关
我的任务
通信技术
通信技术相关讨论
复制链接
扫一扫
分享
社区描述
通信技术相关讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章