使用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中pygame模块用法实例
Oct 09 Python
在Python的Django框架中使用通用视图的方法
Jul 21 Python
python获取list下标及其值的简单方法
Sep 12 Python
python登录并爬取淘宝信息代码示例
Dec 09 Python
基于python历史天气采集的分析
Feb 14 Python
python psutil模块使用方法解析
Aug 01 Python
python批量图片处理简单示例
Aug 06 Python
关于pymysql模块的使用以及代码详解
Sep 01 Python
Python Pandas数据分析工具用法实例
Nov 05 Python
Python3中的tuple函数知识点讲解
Jan 03 Python
Django Paginator分页器的使用示例
Jun 23 Python
Python turtle编写简单的球类小游戏
Mar 31 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中header用法小结
2016/05/23 PHP
php删除一个路径下的所有文件夹和文件的方法
2018/02/07 PHP
JavaScript和CSS通过expression实现Table居中显示
2013/06/28 Javascript
JQuery对class属性的操作实现按钮开关效果
2013/10/11 Javascript
js实现日期级联效果
2014/01/23 Javascript
jQuery Migrate 1.1.0 Released 注意事项
2014/06/14 Javascript
点击标签切换和自动切换DIV选项卡
2014/08/10 Javascript
jQuery页面加载初始化的3种方法(推荐)
2016/06/02 Javascript
JavaScript职责链模式概述
2016/09/17 Javascript
微信JSAPI支付操作需要注意的细节
2017/01/10 Javascript
简单谈谈axios中的get,post方法
2017/06/25 Javascript
详解webpack 如何集成第三方js库
2017/06/29 Javascript
原生JS实现多个小球碰撞反弹效果示例
2018/01/31 Javascript
JS实现导出Excel的五种方法详解【附源码下载】
2018/03/15 Javascript
关于Google发布的JavaScript代码规范你要知道哪些
2018/04/04 Javascript
Vue-Router基础学习笔记(小结)
2018/10/15 Javascript
Vue移动端实现图片上传及超过1M压缩上传
2019/12/23 Javascript
js仿淘宝放大镜效果
2020/12/28 Javascript
详解微信小程序轨迹回放实现及遇到的坑
2021/02/02 Javascript
举例讲解Python中装饰器的用法
2015/04/27 Python
python 提取key 为中文的json 串方法
2018/12/31 Python
超简单使用Python换脸实例
2019/03/27 Python
Python数据类型之列表和元组的方法实例详解
2019/07/08 Python
Python小程序 控制鼠标循环点击代码实例
2019/10/08 Python
python3中sys.argv的实例用法
2020/04/24 Python
Python操作PostgreSql数据库的方法(基本的增删改查)
2020/12/29 Python
HTML5的表单(绝对特别强大的功能)使用示例
2013/06/20 HTML / CSS
AmazeUI框架搭建的方法步骤(图文)
2020/08/17 HTML / CSS
英国旅游额外服务市场领导者:Holiday Extras(机场停车场、酒店、接送等)
2017/10/07 全球购物
酒店总经理助理岗位职责
2014/02/01 职场文书
趣味游戏活动方案
2014/02/07 职场文书
大学生个人求职口试自我评价
2014/02/16 职场文书
2014年教研组工作总结
2014/11/26 职场文书
2014年体育教学工作总结
2014/12/09 职场文书
学校2016年全国助残日活动总结
2016/04/01 职场文书
C站最全Python标准库总结,你想要的都在这里
2021/07/03 Python