Socket 客户端的断开重连

因为服务端不是自己写,不能进行心跳检测,只能尝试其他方式。

在尝试其他方式失败的情况下,无奈的开始尝试增加一条线程进行连接测试,即使用一个Socket_client_test 连接服务端,然后使用disconnect(true)方式,当连接断开时抛出异常并结束线程,此时判断为断开,开始重连。

测试代码如下:

        private void client_connect_test()
        {
            string test_host = Tb_clientIP.Text;
            int test_port = Convert.ToInt32(Tb_clientPort.Text);
            IPAddress test_ip = IPAddress.Parse(test_host);
            IPEndPoint test_endPoint = new IPEndPoint(test_ip, test_port);

            try
            {
                client_test_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                client_test_socket.Connect(test_endPoint);
                Thread.Sleep(20);
                client_test_socket.Disconnect(true);  //true会将进程一直保持在这一步直到发生异常,false在重复运行时容易发生错误,暂时就没试了。。。
            }
            catch (Exception e)
            {
                log_writer("#4 远程断开,重新连接。" + e.Message);
                client_reboot_need = true;  //需重启的标志
            }
        }

 

纯粹瞎看自学,先以目的为指导,之后再看看原因了。。。

转载于:https://www.cnblogs.com/Elvis-Luo/p/9786706.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Python中实现socket客户端的断线重连可以通过以下几个步骤来完成: 1. 创建socket客户端并连接到服务器。 2. 在while循环中不断尝试接收服务器发送的数据。 3. 如果接收数据时发生异常,则说明与服务器的连接已经断开,需要进行重连操作。 4. 在重连操作中,首先关闭原有的socket客户端,然后重新创建socket客户端并连接到服务器。 5. 在重连操作完成后,继续执行while循环来接收服务器发送的数据。 下面是一个示例代码,可以实现socket客户端的断线重连功能: ```python import socket import time HOST = 'localhost' # 服务器IP地址 PORT = 8888 # 服务器端口号 while True: try: # 创建socket客户端并连接到服务器 client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client_socket.connect((HOST, PORT)) print('连接服务器成功') # 循环接收服务器发送的数据 while True: data = client_socket.recv(1024) # 接收数据 if not data: break print('接收到数据:', data.decode()) except Exception as e: print('与服务器的连接已经断开,正在尝试重新连接...', e) # 关闭原有的socket客户端 client_socket.close() # 等待一段时间后重新连接到服务器 time.sleep(5) # 重新创建socket客户端并连接到服务器 client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client_socket.connect((HOST, PORT)) print('重新连接服务器成功') ``` 在上面的代码中,如果接收数据时发生异常,就会进入重连操作,在重连操作中会关闭原有的socket客户端,等待5秒后重新创建socket客户端并连接到服务器。这样就可以实现socket客户端的断线重连功能了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值