使用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算法学习之桶排序算法实例(分块排序)
Dec 18 Python
wxPython之解决闪烁的问题
Jan 15 Python
Python使用pickle模块实现序列化功能示例
Jul 13 Python
python实现AES加密和解密
Mar 27 Python
Python3.5迭代器与生成器用法实例分析
Apr 30 Python
Python数据可视化实现正态分布(高斯分布)
Aug 21 Python
Python使用tkinter模块实现推箱子游戏
Oct 08 Python
python框架django项目部署相关知识详解
Nov 04 Python
python实现飞机大战小游戏
Nov 08 Python
Python csv文件的读写操作实例详解
Nov 19 Python
python序列化与数据持久化实例详解
Dec 20 Python
使用matplotlib动态刷新指定曲线实例
Apr 23 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
利用文件属性结合Session实现在线人数统计
2006/10/09 PHP
一个简单的自动发送邮件系统(一)
2006/10/09 PHP
PHP编码规范之注释和文件结构说明
2010/07/09 PHP
PHP文件上传主要代码讲解
2013/09/30 PHP
CodeIgniter框架提示Disallowed Key Characters的解决办法
2014/04/21 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
2017/07/03 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
jsp网页搜索结果中实现选中一行使其高亮
2014/02/17 Javascript
IE浏览器不支持getElementsByClassName的解决方法
2014/08/27 Javascript
jQuery淡入淡出元素让其效果更为生动
2014/09/01 Javascript
JS 新增Cookie 取cookie值 删除cookie 举例详解
2014/10/10 Javascript
JavaScript静态类型检查工具FLOW简介
2015/01/06 Javascript
纯js代码实现简单计算器
2015/12/02 Javascript
Node.js中防止错误导致的进程阻塞的方法
2016/08/11 Javascript
移动端触摸滑动插件swiper使用方法详解
2017/08/11 Javascript
JS匿名函数内部this指向问题详析
2019/05/10 Javascript
详解小程序云开发数据库
2019/05/20 Javascript
vue 调用 RESTful风格接口操作
2020/08/11 Javascript
Python常用时间操作总结【取得当前时间、时间函数、应用等】
2017/05/11 Python
对python-3-print重定向输出的几种方法总结
2018/05/11 Python
基于DataFrame筛选数据与loc的用法详解
2018/05/18 Python
Python为何不能用可变对象作为默认参数的值
2019/07/01 Python
Python计算机视觉里的IOU计算实例
2020/01/17 Python
css3旋转木马_动力节点Java学院整理
2017/07/12 HTML / CSS
JACK & JONES瑞典官方网站:杰克琼斯欧式风格男装
2017/12/23 全球购物
Black Halo官方网站:购买连衣裙、礼服和连体裤
2018/06/13 全球购物
采购意向书范本
2014/03/31 职场文书
竞选学习委员演讲稿
2014/04/28 职场文书
社区党员志愿服务活动方案
2014/08/18 职场文书
做人民满意的公务员活动方案
2014/08/25 职场文书
加强机关作风建设心得体会
2014/10/22 职场文书
2016教师党员学习心得体会
2016/01/21 职场文书
2016年“12.3”国际残疾人日活动总结
2016/04/01 职场文书
用Python实现Newton插值法
2021/04/17 Python
巧用 -webkit-box-reflect 倒影实现各类动效(小结)
2021/04/22 HTML / CSS
python开发实时可视化仪表盘的示例
2021/05/07 Python