社区
网络编程
帖子详情
TCP客户端服务器端断开的消息响应及自动重连
whirlrain9
2010-09-27 10:25:33
那位大哥有这方面的源码啊,简单的demo就行,我找了好多资料都没找到,我用的是阻塞式的,当socket的正常断开或意外断开,都可以通过消息响应及时的自动重连
...全文
1594
16
打赏
收藏
TCP客户端服务器端断开的消息响应及自动重连
那位大哥有这方面的源码啊,简单的demo就行,我找了好多资料都没找到,我用的是阻塞式的,当socket的正常断开或意外断开,都可以通过消息响应及时的自动重连
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jackson35296
2010-09-29
打赏
举报
回复
[Quote=引用 8 楼 muzizongheng 的回复:]
引用 4 楼 jackson35296 的回复:
引用 3 楼 lijianli9 的回复:
异常断开肯定是要用心跳包的形式来知道的了,
有没有写过网络编程?断开后操作系统会告诉你,你查询套接字的状态会得到异常,或者当发现函数失败WSAGetLastError的时候也会得到内核的通知。
一看你就不专业。
[/Quote]
我写TCP编程也写了不少,断线重连也搞过,从来不用心跳,UDP和B/S编程才用到过
傻X
2010-09-29
打赏
举报
回复
[Quote=引用 12 楼 mayudong1 的回复:]
问个问题啊
如果tcp连接建立好了,很长时间不发送数据,连接依然能保持
如果这个时候把网线断开,过段时间再插上,这个时候那个连接还存在吗?还能继续通讯吗?
[/Quote]
我记得貌似是不能的,你的SOCKET句柄被破坏了。
傻X
2010-09-29
打赏
举报
回复
[Quote=引用 8 楼 muzizongheng 的回复:]
引用 4 楼 jackson35296 的回复:
引用 3 楼 lijianli9 的回复:
异常断开肯定是要用心跳包的形式来知道的了,
有没有写过网络编程?断开后操作系统会告诉你,你查询套接字的状态会得到异常,或者当发现函数失败WSAGetLastError的时候也会得到内核的通知。
一看你就不专业。
[/Quote]
顶木子哥
czh604
2010-09-29
打赏
举报
回复
一般是要心跳的。
有些连接不是实时的在发数据,有可能连接出现空闲,这时网络突然出现异常断开,服务器是监测不到的。
这样就需要一个额外的心跳连接来定时判断客户端是否处于连接状态。
心跳连接:一般是客户来定时给服务器发个心跳包(小数据包),服务器接收到返回一个相对应的心跳包。
客户端内实时的判断心跳连接是否断开(服务器正常或异常断开都会导致心跳套接字接收不到数据包),来重启连接。
Eleven
2010-09-29
打赏
举报
回复
[Quote=引用 12 楼 mayudong1 的回复:]
问个问题啊
如果tcp连接建立好了,很长时间不发送数据,连接依然能保持
如果这个时候把网线断开,过段时间再插上,这个时候那个连接还存在吗?还能继续通讯吗?
[/Quote]
不能,需要重新建立连接,三次握手
mayudong1
2010-09-29
打赏
举报
回复
问个问题啊
如果tcp连接建立好了,很长时间不发送数据,连接依然能保持
如果这个时候把网线断开,过段时间再插上,这个时候那个连接还存在吗?还能继续通讯吗?
jwybobo2007
2010-09-28
打赏
举报
回复
异常断开,需要程序员自己处理,比如直接拔网线,或者突然断电等等,还有就是程序级别的服务端挂掉等,需要自己的逻辑处理,如心跳机制等,可自己实现,或者使用Windows或者Unix下的特殊API处理,如WSAIoctl
【天运子】
2010-09-28
打赏
举报
回复
他说的是异常
jackson35296
2010-09-28
打赏
举报
回复
B/S编程和UDP编程时才用到心跳。比如定期向web服务器发一个request证明自己在线。http协议是请求一下就断开了,每次都要重新连接,重新请求,这种情况下才有必要用心跳机制。一般的TCP通信都是长连接,不可能频繁连接和断开。对于长期保持连接的情况,一旦断开,操作系统底层都会通知你,你需要解决的是如何获取到系统的通知。
jackson35296
2010-09-28
打赏
举报
回复
[Quote=引用 3 楼 lijianli9 的回复:]
异常断开肯定是要用心跳包的形式来知道的了,
[/Quote]
有没有写过网络编程?断开后操作系统会告诉你,你查询套接字的状态会得到异常,或者当发现函数失败WSAGetLastError的时候也会得到内核的通知。
lijianli9
2010-09-28
打赏
举报
回复
异常断开肯定是要用心跳包的形式来知道的了,
jackson35296
2010-09-28
打赏
举报
回复
[Quote=引用 1 楼 muzizongheng 的回复:]
发送心跳包, 失败就重连。
[/Quote]
TCP还用整心跳?
阻塞模式下, recv函数返回-1就说明网络断开了,然后就可以重连;非阻塞模式下,根据WSAGetLastError()的值来判断网络断开
muzizongheng
2010-09-28
打赏
举报
回复
发送心跳包, 失败就重连。
muzizongheng
2010-09-28
打赏
举报
回复
[Quote=引用 4 楼 jackson35296 的回复:]
引用 3 楼 lijianli9 的回复:
异常断开肯定是要用心跳包的形式来知道的了,
有没有写过网络编程?断开后操作系统会告诉你,你查询套接字的状态会得到异常,或者当发现函数失败WSAGetLastError的时候也会得到内核的通知。
[/Quote]
一看你就不专业。
zhaohongbo83
2010-09-28
打赏
举报
回复
// 发送回应消息
int nSend = Send4IntMsg(sock, (char*)(LPCTSTR)strSendBuf, strSendBuf.GetLength(), errMsg);
if (nSend < 0) // 发送消息失败
closesocket(sock);
重新连接就可以了
这个在一个线程里,循环检测就OK了!
C# Socket通信从入门到精通(21)——
Tcp
客户端
判断与服务器
断开
连接的三种方法以及C#代码实现
我们开发的
tcp
客户端
程序在连接服务器以后,经常会遇到服务器已经关闭但是作为
客户端
的我们不知道,这时候应该应该有一个机制我们可以实时监测
客户端
和服务器已经
断开
连接,如果已经
断开
了连接,我们应该及时报警提示用户
客户端
和服务器已经
断开
连接,本文介绍三种可以监测
客户端
已经与服务器
断开
连接的方法,并介绍三种方法分别适用于哪种业务场景。
TCP
通讯
客户端
怎样判断与
服务器端
断开
,该如何处理
TCP
通讯
客户端
怎样判断与
服务器端
断开
大虾们,神们,C# winform里面,采用多线程监听端口,接收方式为阻塞式,创建单一线程进行监听函数,这样阻塞时只阻塞单一线程,对主线程没有影响,并使用异步通信模式,来一个连接后回调函数进行解析入库。这是我的实现原理,目前有个问题,如何在
客户端
检测到与服务器
断开
,目前我只能做到写入TXT文档里面,看文档查看最后一次连接时间,如下: ------------------------告警信息2012-2-22 23:31:04----...
TCP
通信中服务器处理
客户端
意外
断开
如果
TCP
连接被对方正常关闭,也就是说,对方是正确地调用了closesocket(s)或者shutdown(s)的话,那么上面的Recv或Send调用就能马上返回,并且报错。这是由于close socket(s)或者shutdown(s)有个正常的关闭过程,会告诉对方“
TCP
连接已经关闭,你不需要再发送或者接受
消息
了”。 但是,如果意外
断开
,
客户端
(3g的移动设备)并没有正常关闭socket。双方并未按照协议上的四次挥手去
断开
连接。 那么这时候正在执行Recv或Send操作的一方就会因为没有任何连接中断的通
tcp
服务端如何判断
客户端
断开
连接
最近在做一个
服务器端
程序,C/S结构。功能方面比较简单就是client端与server端建立连接,然后发送
消息
给server。我在server端会使用专门的线程处理一条socket连接。这就涉及到一个问题,如果socket连接
断开
(异常,正常)后,我如何才能感知到?server端这边是绝对被动的,sever端不能主动
断开
连接。也没有连接链路维持包之类的。client端发送数据的时间也是不定的。在s...
tcp
服务器
响应
超时,
tcp
客户端
与服务器的连接超时
tcp
客户端
与服务器的连接超时 内容精选换一换ELB的常见异常返回码有400、403、502、504等。若遇到这些返回码建议您先直接访问后端云服务器,查看是否是后端云服务器的异常。若后端云服务器
响应
正常,请参考表1排查处理。如果仍无法解决,请联系客服人员继续排查。检查后端云服务器的健康检查状态是否正常,如果异常,流量会切换到其他后端云服务器。客户后端服务安全策略中是否放通了100.125.0.0/...
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章