使用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自动化测试之连接几组测试包实例
Sep 28 Python
python使用Flask框架获取用户IP地址的方法
Mar 21 Python
python实现杨辉三角思路
Jul 14 Python
python使用正则表达式替换匹配成功的组
Nov 17 Python
Python编程求解二叉树中和为某一值的路径代码示例
Jan 04 Python
TensorFlow利用saver保存和提取参数的实例
Jul 26 Python
Python数据可视化实现正态分布(高斯分布)
Aug 21 Python
Python标准库shutil模块使用方法解析
Mar 10 Python
Python如何批量生成和调用变量
Nov 21 Python
python实现计算器简易版
Dec 17 Python
OpenCV+python实现膨胀和腐蚀的示例
Dec 21 Python
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
May 21 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的输出:缓存并压缩动态页面
2013/06/11 PHP
PHP 动态生成静态HTML页面示例代码
2014/01/15 PHP
ThinkPHP添加更新标签的方法
2014/12/05 PHP
在Mac OS上编译安装Nginx+PHP+MariaDB开发环境的教程
2016/02/23 PHP
使用ltrace工具跟踪PHP库函数调用的方法
2016/04/25 PHP
javascript 验证日期的函数
2010/03/18 Javascript
纯JavaScript实现HTML5 Canvas六种特效滤镜示例
2013/06/28 Javascript
js编码、解码函数介绍及其使用示例
2013/09/05 Javascript
简单常用的幻灯片播放实现代码
2013/09/25 Javascript
js判断数据类型如判断是否为数组是否为字符串等等
2014/01/15 Javascript
js/jquery判断浏览器的方法小结
2014/09/02 Javascript
jQuery实现DIV层淡入淡出拖动特效的方法
2015/02/13 Javascript
DOM 高级编程
2015/05/06 Javascript
7个有用的jQuery代码片段分享
2015/05/19 Javascript
js实现select二级联动下拉菜单
2020/04/17 Javascript
举例讲解如何判断JavaScript中对象的类型
2016/04/22 Javascript
BootStrap table删除指定行的注意事项(笔记整理)
2017/02/05 Javascript
微信小程序 sha1 实现密码加密实例详解
2017/07/06 Javascript
vue-cli脚手架config目录下index.js配置文件的方法
2018/03/13 Javascript
详解如何使用node.js的开发框架express创建一个web应用
2018/12/20 Javascript
vue proxy 的优势与使用场景实现
2020/06/15 Javascript
[45:40]Ti4 冒泡赛第二天NEWBEE vs NaVi 1
2014/07/15 DOTA
[06:07]辉夜杯现场观众互动 “比谁远送显示器”
2015/12/26 DOTA
让 python 命令行也可以自动补全
2014/11/30 Python
Python进程通信之匿名管道实例讲解
2015/04/11 Python
横向对比分析Python解析XML的四种方式
2016/03/30 Python
解决Python中字符串和数字拼接报错的方法
2016/10/23 Python
Python HTML解析器BeautifulSoup用法实例详解【爬虫解析器】
2019/04/05 Python
Python ORM框架Peewee用法详解
2020/04/29 Python
小学生节约用水倡议书
2014/05/15 职场文书
上班迟到检讨书范文300字
2014/11/02 职场文书
2014年教师教学工作总结
2014/11/08 职场文书
2014年档案管理员工作总结
2014/12/01 职场文书
大学学生会辞职信
2015/05/13 职场文书
张丽莉事迹观后感
2015/06/16 职场文书
Java数组与堆栈相关知识总结
2021/06/29 Java/Android