社区
网络编程
帖子详情
如何判断一个socket已经断开?
vc_xx
2008-03-05 10:52:48
比如说,我建立的这个连接,
SOCKET sockconn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
怎么判断 该sockconn已经断开?
我这是为了处理在服务器与客户机传输数据过程中,客户机意外断开时用的
...全文
252
8
打赏
收藏
如何判断一个socket已经断开?
比如说,我建立的这个连接, SOCKET sockconn=accept(sockSrv,(SOCKADDR*)&addrClient,&len); 怎么判断 该sockconn已经断开? 我这是为了处理在服务器与客户机传输数据过程中,客户机意外断开时用的
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yangwww_sl
2008-03-05
打赏
举报
回复
同意楼上的,不过建议以连续三个包为判断标准,若连续三个包都没有收到返回的则判断为断开,这样可以避免因网络丢包而造成的重复连接。
其中若第一个包没有返回,那么剩下的两个包的发送时间可以按1/2上个时间为界发送,当然也可以选其他的,思路如此……
annvily
2008-03-05
打赏
举报
回复
客户端每隔一段时间给服务器发个心跳包
收到即为还连接
未收到就断定断开,需要重连
vc_xx
2008-03-05
打赏
举报
回复
我想在服务器端处理这样的情况:
客户端好长时间没给我传数据了,他是已经断开了还是怎么的?
我该怎么判断与客户端的连接已经断开??
晨星
2008-03-05
打赏
举报
回复
断开了的服务器socket,accept不会失败么?
vc_xx
2008-03-05
打赏
举报
回复
能不能具体说一下这个函数的用法?后边的这几个
SOL_SOCKET, 0x700C/*SO_CONNECT_TIME*/, (char *)&Connect_Time, &Size
是什么意思?谢谢
僵哥
2008-03-05
打赏
举报
回复
getsockopt(Socket, SOL_SOCKET, 0x700C/*SO_CONNECT_TIME*/, (char *)&Connect_Time, &Size)
僵哥
2008-03-05
打赏
举报
回复
[Quote=引用 2 楼 vc_xx 的回复:]
能不能具体说一下这个函数的用法?后边的这几个
SOL_SOCKET, 0x700C/*SO_CONNECT_TIME*/, (char *)&Connect_Time, &Size
是什么意思?谢谢
[/Quote]
使用SO_CONNECT_TIME来取得连接的时间,如果连接已经断开,则会返回相应的错误码。
晨星
2008-03-05
打赏
举报
回复
[Quote=引用 4 楼 vc_xx 的回复:]
我想在服务器端处理这样的情况:
客户端好长时间没给我传数据了,他是已经断开了还是怎么的?
我该怎么判断与客户端的连接已经断开??
[/Quote]
那种情况,receive会失败的。
Python网络编程(
socket
)
网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?答案就是
socket
.
socket
翻译为套接字,它本质就是在应用层和传输层(TCP/IP协议族通信)之间的
一个
抽象层,是一组接口,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。该课程包括OS模型,TCP/IP协议,
socket
函数等Python网络编程基础知识。
如何
判断
一个
Socket
是否
断开
?
非阻塞模式,如果暂时没有数据,返回的值也会是 当使用 select()函数测试
一个
socket
是否可读时,如果select()函数返回值为1,且使用recv()函数读取的数据长度为0 时,就说明该
socket
已经
断开
。 经过代码试验,如果进程受到一些信号时,例如:INTR,recv()返回值小于等于0时,这是就需要
判断
errno是否等于 EINTR , 如果errno == EI
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
已经
断开
非阻塞模式,如果暂时没有数据,返回的值也会是 当使用 select()函数测试
一个
socket
是否可读时,如果select()函数返回值为1, 且使用recv()函数读取的数据长度为0 时,就说明该
socket
已经
断开
。 如果write,我觉得还有一些情况需要考虑,那就是写的太快的时候,有可能buffer写满了,这是,errno是EAGAIN,可以根据实际需要,如果errn
Linux
判断
tcp
socket
连接
断开
的方法
Linux C代码客户端
判断
tcp
socket
连接
断开
或丢失的方法 当建立TCP
socket
连接后,作为客户端需要对tcp的连接做维护。如果连接
断开
需要重连等操作。但是在
socket
tcp C库代码中没有提供
判断
连接是否正确的接口调用函数。 实际上,使用tcp连接后,调用read函数读取
socket
时,正常情况下是会阻塞。当接收到数据时才会读出。所以可以
判断
当read时未阻塞,并且返回值为0或-1时,可以
判断
连接
已经
断开
。 ...
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章