客户端断线重连、等待重连服务端

需求:

  若服务端先上线就等待客户端连接,客户端则正常连接。当客户端先上线,服务端还没上线,或当服务端掉线时,则客户端不断重新连接服务端,直到服务端上线。服务端与客户端任意一端掉线,能提示掉线。

 

解决:

  服务端开一个线程,负责循环等待客户端连接,当客户端连接成功则进入循环接收客户端heartbeat数据检测客户端是否掉线,掉线则重新进入等待。(若需要同时服务多个客户端,则需要两个线程,一个负责等待连接,另一个负责接收数据与检测是否掉线,那socketfd、客户端地址、线程号等数据可能都要维护,当客户端掉线时就销毁线程与数据)

  客户端需要开两个线程,一个线程负责不断连接服务器直到成功,若成功连接就进入定时发送heartbeat数据来检测服务端是否掉线,掉线则退出发送进入重连;另外一个线程负责接收服务端数据,接收时服务器掉线也马上重连。(用了一个全局变量来表示是否连接成功,这两个线程都会修改这个全局变量,就用了互斥锁),可以把select函数用在接收线程中.

转载于:https://www.cnblogs.com/jest549/p/11414064.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值