问题描述

现有一个tcp客户端程序,需定期从服务器取数据,但由于种种原因(网络不稳定等)需要自动重连。

服务端代码

#! /usr/bin/env python
#-*- coding:utf-8 -*-import socket
import threadingclass ThreadedServer(object):def __init__(self, host, port):self.host = hostself.port = portself.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)self.sock.bind((self.host, self.port))def listen(self):self.sock.listen(5)while True:client, address = self.sock.accept()client.settimeout(60)threading.Thread(target = self.listenToClient,args = (client,address)).start()def listenToClient(self, client, address):size = 1024while True:try:data = client.recv(size)if data:response = dataclient.send(response)print("secndLen: ",len(data))else:raise error('Client disconnected')except:client.close()return Falseif __name__ == "__main__":while True:port_num = 12345try:port_num = int(port_num)breakexcept ValueError:print(ValueError)passThreadedServer('',port_num).listen()

客户端代码

注意需要用 python2 执行,python3 会报错

#! /usr/bin/env python
#-*- coding:utf-8 -*-import os,sys,time
import socketdef doConnect(host,port):sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)try :sock.connect((host,port))except :passreturn sockdef main():host,port = "127.0.0.1",12345print(host,port)sockLocal = doConnect(host,port)while True :try :msg = str(time.time())sockLocal.send(msg)print("send msg ok : ",msg)print("recv data :",sockLocal.recv(1024))except socket.error :print("\r\nsocket error,do reconnect ")time.sleep(3)sockLocal = doConnect(host,port)except :print('\r\nother error occur ')time.sleep(3)time.sleep(1)if __name__ == "__main__" :main()

运行效果:

(py27env) [root@local t1]# python tcpClient1_reconnect.py
127.0.0.1 12345
send msg ok :  1498891374.98
recv data : 1498891374.98
send msg ok :  1498891375.98
recv data : 1498891375.98
send msg ok :  1498891376.98
recv data :socket error,do reconnect
send msg ok :  1498891381.99
recv data : 1498891381.99
send msg ok :  1498891382.99
recv data : 1498891382.99

Python之Socket自动重连相关推荐

  1. java socket 自动重连_RxWebSocket是一个基于okhttp和RxJava封装的自动重连WebSocket客户端...

    RxWebSocket 招聘:我司正在招聘Android架构师职位,如有兴趣,请点击Android 架构师查看招聘详情,简历可发送到 dhh@gs-robot.com 邮箱,期待你的到来! RxWeb ...

  2. python socket自动重连_详解python3中socket套接字的编码问题解决

    一.TCP 1.tcp服务器创建 #创建服务器 from socket import * from time import ctime #导入ctime HOST = '' #任意主机 PORT = ...

  3. python socket自动重连_python之tcp自动重连

    在写一个传输文件的socket程序时,客户端实现了和服务端断开连接后重新自动连接功能,但是连接上服务端后再重启服务端,客户端出现了Errno 10054异常.出错的代码如下: client.py: i ...

  4. python socket自动重连_python – 如何在autobahn websocket超时后重新连接?

    我正在使用Autobahn来连接这样的websocket. class MyComponent(ApplicationSession): @inlineCallbacks def onJoin(sel ...

  5. java socket 自动重连_socket 如何判断远端服务器的连接状态?连接断开,需重连...

    fluent-logger-java is a Java library, to record events via Fluentd, from Java application. https://g ...

  6. python websocket 断线自动重连

    搜索了半天,网上都是什么心跳重连,人现在的包都装好了,不知道你们咋还那么多问题, 目前的问题是,客户端由于网络等等各种原因,断开了,这种情况的重连如下: 先定义连接函数 def connection_ ...

  7. python 生成excel自动重命名_用Python重命名和保存Excel文件

    检查^{}和^{}模块以列出文件夹内容(walk,listdir)并使用路径名(abspath,basename等) 另外,^{}还有一些有趣的复制功能.签出copyfile,并根据从excel文件中 ...

  8. 树莓派python实例_使用Python实现树莓派WiFi断线自动重连实例(附代码)

    实现 WiFi 断线自动重连,原理是用 Python 监测网络是否断线,如果断线则重启网络服务.接下来给大家分享实现代码,需要的朋友参考下 1.Python 代码 autowifi.py,放在 /ho ...

  9. python连不上树莓派_Python实现树莓派WiFi断线自动重连

    实现 WiFi 断线自动重连.原理是用 Python 监测网络是否断线,如果断线则重启网络服务. 1.Python 代码 autowifi.py,放在 /home/pi 目录下: #!/usr/bin ...

最新文章

  1. leetcode--Median of Two Sorted Arrays
  2. Jupyter notebook 不安装主题,通过修改css更改 默认字体,字体大小等
  3. BugkuCTF-Crypto题散乱的密文
  4. java 8 new feature_java 8 new feature --- default method
  5. linux 多CPU
  6. 类似clover的软件_Clover 我的电脑里的书签栏
  7. 生成word_用Word生成员工信息表,单独生成独立文件,还能自动命名
  8. GetWindowRect与GetClientRect 的区别
  9. Docker 学习笔记
  10. [APIO2014]序列分割
  11. 超实用的几款Macos/Macbook/iMac 影片剪辑软件
  12. 【PostgresSQL】生成当前时间以及当前时间戳
  13. 银行制定快捷支付限额原因
  14. Delphi中多库关联查询
  15. 我写了一个微信排版编辑器(已开源)
  16. 强人工智能基本问题:自上而下还是自下而上? 1
  17. [nk] 糟糕的打谱员 线性DP
  18. 计算机专业912,备战2019清华计算机912考研系列笔记绪论
  19. 查看、修改oracle字符集,查看oracle版本
  20. 搭建nlp_server服务器

热门文章

  1. RealSense相机在ros2环境的安装
  2. 糖尿病合并高血压高龄奥密克戎感染重症、危重症患者诊疗建议 v0(手稿)
  3. mysql dba项目经验_MySQL数据库专家分享资深DBA经验
  4. 冰河的高并发电子书开源啦(文末免费领取)!!
  5. 【钉钉-场景化能力包】e签宝提供的电子签名能力
  6. [1.24] T3-人品问题
  7. Smalltalk的变量
  8. 2022高处安装、维护、拆除考试模拟100题及模拟考试
  9. SECTION 24 面向对象编程(三)
  10. Ubuntu安装xxx依赖错误解决方法