使用python实现tcp自动重连


Posted in Python onJuly 02, 2017

操作系统: CentOS 6.9_x64

python语言版本: 2.7.13

问题描述

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

测试服务器示例代码:

https://github.com/mike-zhang/pyExamples/blob/master/socketRelate/tcpServer1_multithread.py

解决方案

'''
tcp client with reconnect
E-Mail : Mike_Zhang@live.com
'''

#! /usr/bin/env python
#-*- coding:utf-8 -*-

import os,sys,time
import socket

def doConnect(host,port):
  sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  try :
    sock.connect((host,port))
  except :
    pass
  return sock

def main():
  host,port = "127.0.0.1",12345
  print 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的tcp自动重连。

Python 相关文章推荐
Python抓取电影天堂电影信息的代码
Apr 07 Python
浅谈Python中用datetime包进行对时间的一些操作
Jun 23 Python
Python通过future处理并发问题
Oct 17 Python
简单了解python模块概念
Jan 11 Python
CentOS下Python3的安装及创建虚拟环境的方法
Nov 28 Python
Python计算库numpy进行方差/标准方差/样本标准方差/协方差的计算
Dec 28 Python
关于Python turtle库使用时坐标的确定方法
Mar 19 Python
Python运行提示缺少模块问题解决方案
Apr 02 Python
Python中如何引入第三方模块
May 27 Python
Python实现加密的RAR文件解压的方法(密码已知)
Sep 11 Python
PyTorch 中的傅里叶卷积实现示例
Dec 11 Python
Python 可迭代对象 iterable的具体使用
Aug 07 Python
详解python3中socket套接字的编码问题解决
Jul 01 #Python
详解Python中for循环是如何工作的
Jun 30 #Python
python 连接sqlite及简单操作
Jun 30 #Python
利用Python破解斗地主残局详解
Jun 30 #Python
Python实现的文本编辑器功能示例
Jun 30 #Python
Python构建XML树结构的方法示例
Jun 30 #Python
基于python的Tkinter编写登陆注册界面
Jun 30 #Python
You might like
简体中文转换为繁体中文的PHP函数
2006/10/09 PHP
PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别
2014/09/29 PHP
PHP中new static()与new self()的比较
2016/08/19 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
JavaScript调用堆栈及setTimeout使用方法深入剖析
2013/02/16 Javascript
Jquery事件的连接使用示例
2013/06/18 Javascript
JS+flash实现chrome和ie浏览器下同时可以复制粘贴
2013/09/22 Javascript
Javascript脚本实现静态网页加密实例代码
2013/11/05 Javascript
全面理解面向对象的 JavaScript(来自ibm)
2013/11/10 Javascript
jquery上传插件fineuploader上传文件使用方法(jquery图片上传插件)
2013/12/05 Javascript
js数值和和字符串进行转换时可以对不同进制进行操作
2014/03/05 Javascript
jquery.ajax之beforeSend方法使用介绍
2014/12/08 Javascript
详解JavaScript正则表达式之分组匹配及反向引用
2016/03/09 Javascript
jQuery实现优雅的弹窗效果(6)
2017/02/08 Javascript
常见的浏览器Hack技巧整理
2017/06/29 Javascript
mac上node.js环境的安装测试
2017/07/03 Javascript
React为 Vue 引入容器组件和展示组件的教程详解
2018/05/03 Javascript
Vue 中对图片地址进行拼接的方法
2018/09/03 Javascript
JS页面动态绘图工具SVG,Canvas,VML介简介
2020/10/16 Javascript
[01:04:14]VP vs TNC 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python关键字and和or用法实例
2015/05/28 Python
教你用Type Hint提高Python程序开发效率
2016/08/08 Python
django轻松使用富文本编辑器CKEditor的方法
2017/03/30 Python
在python中只选取列表中某一纵列的方法
2018/11/28 Python
Python Threading 线程/互斥锁/死锁/GIL锁
2019/07/21 Python
python中strip(),lstrip(),rstrip()函数的使用讲解
2020/11/17 Python
python3中celery异步框架简单使用+守护进程方式启动
2021/01/20 Python
英国太阳镜品牌:Taylor Morris Eyewear
2018/04/18 全球购物
高清安全摄像头系统:Lorex Technology
2018/07/20 全球购物
2013年办公室秘书的个人自我鉴定
2013/10/24 职场文书
十岁生日家长答谢词
2014/01/17 职场文书
联谊活动策划书
2014/01/26 职场文书
领导接待方案
2014/03/13 职场文书
高三毕业典礼演讲稿
2014/05/13 职场文书
八项规定自查自纠报告及整改措施
2014/10/26 职场文书
python 爬取哔哩哔哩up主信息和投稿视频
2021/06/07 Python