使用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统计文件行数示例分享
Feb 21 Python
Python序列操作之进阶篇
Dec 08 Python
Python学习_几种存取xls/xlsx文件的方法总结
May 03 Python
python 统计列表中不同元素的数量方法
Jun 29 Python
在Pycharm中执行scrapy命令的方法
Jan 16 Python
Python实现的多进程拷贝文件并显示百分比功能示例
Apr 09 Python
python+selenium实现简历自动刷新的示例代码
May 20 Python
itchat-python搭建微信机器人(附示例)
Jun 11 Python
Python调用百度根据经纬度查询地址的示例代码
Jul 07 Python
python正则表达式匹配不包含某几个字符的字符串方法
Jul 23 Python
Django如何批量创建Model
Sep 01 Python
matplotlib之多边形选区(PolygonSelector)的使用
Feb 24 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(7) php 字符串相关应用
2010/03/05 PHP
PHP 配置后台登录以及模板引入
2017/01/24 PHP
laravel7学习之无限级分类的最新实现方法
2020/09/30 PHP
javascript 混合的构造函数和原型方式,动态原型方式
2009/12/07 Javascript
JavaScript DOM学习第四章 getElementByTagNames
2010/02/19 Javascript
原生javascript和jquery判断浏览器版本等信息
2013/07/04 Javascript
javascript判断数组内是否重复的方法
2015/04/21 Javascript
jQuery插件Timelinr 实现时间轴特效
2015/10/04 Javascript
jQuery自动完成插件completer附源码下载
2016/01/04 Javascript
jQuery插件支持同一页面被多次调用
2016/02/14 Javascript
jQueryUI DatePicker 添加时分秒
2016/06/04 Javascript
Vue.JS入门教程之列表渲染
2016/12/01 Javascript
详解node如何让一个端口同时支持https与http
2017/07/04 Javascript
解决bootstrap模态框数据缓存的问题方法
2018/08/10 Javascript
iview Upload组件多个文件上传的示例代码
2018/09/30 Javascript
Vue.js 事件修饰符的使用教程
2018/11/01 Javascript
vue实现拖拽进度条
2021/03/01 Vue.js
[01:02:07]Liquid vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
如何使用VSCode愉快的写Python于调试配置步骤
2018/04/06 Python
利用Python如何制作好玩的GIF动图详解
2018/07/11 Python
Windows下Anaconda安装、换源与更新的方法
2020/04/17 Python
你不知道的葡萄干处理法、橙蜜处理法、二氧化碳酵母法
2021/03/17 冲泡冲煮
CSS3解析抖音LOGO制作的方法步骤
2019/04/11 HTML / CSS
彪马加拿大官网:PUMA加拿大
2018/10/04 全球购物
GafasWorld西班牙:购买太阳镜、眼镜和隐形眼镜
2019/09/08 全球购物
Araks官网:纽约内衣品牌
2020/10/15 全球购物
护士毕业生自荐信
2014/02/07 职场文书
求职信模板标准格式范文
2014/02/23 职场文书
经典的毕业生自荐信范文
2014/04/14 职场文书
挂靠协议书范本
2014/04/22 职场文书
主持人演讲稿
2014/05/13 职场文书
快递员岗位职责
2014/09/12 职场文书
大学教师个人总结
2015/02/10 职场文书
运动会宣传稿50字
2015/07/23 职场文书
2019安全宣传标语大全
2019/08/14 职场文书
Nginx流量拷贝ngx_http_mirror_module模块使用方法详解
2022/04/07 Servers