使用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 31 Python
python 多进程通信模块的简单实现
Feb 20 Python
Python标准库内置函数complex介绍
Nov 25 Python
win10系统中安装scrapy-1.1
Jul 03 Python
Python的时间模块datetime详解
Apr 17 Python
Python中使用多进程来实现并行处理的方法小结
Aug 09 Python
django session完成状态保持的方法
Nov 27 Python
python 将大文件切分为多个小文件的实例
Jan 14 Python
python打开windows应用程序的实例
Jun 28 Python
tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
Jun 30 Python
pandas参数设置的实用小技巧
Aug 23 Python
详解python变量与数据类型
Aug 25 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写入WRITE编码为UTF8的文件的实现代码
2008/07/07 PHP
PHP常用代码大全(新手入门必备)
2010/06/29 PHP
基于php设计模式中工厂模式详细介绍
2013/05/15 PHP
PHP生成树的方法
2015/07/28 PHP
PHP入门教程之数组用法汇总(创建,删除,遍历,排序等)
2016/09/11 PHP
10个新的最有前途的JavaScript框架
2009/03/12 Javascript
自定义函数实现IE7与IE8不兼容js中trim函数的问题
2015/02/03 Javascript
被遗忘的javascript的slice() 方法
2015/04/20 Javascript
jQuery检测返回值的数据类型
2015/07/13 Javascript
Jquery Mobile 自定义按钮图标
2015/11/18 Javascript
论Bootstrap3和Foundation5网格系统的异同
2016/05/16 Javascript
JS中正则表达式只有3种匹配模式(没有单行模式)详解
2016/07/28 Javascript
JavaScript操作文件_动力节点Java学院整理
2017/06/30 Javascript
angular4模块中给标签添加背景图的实现方法
2017/09/15 Javascript
node.js用fs.rename强制重命名或移动文件夹的方法
2017/12/27 Javascript
Vue实现textarea固定输入行数与添加下划线样式的思路详解
2018/06/28 Javascript
React Router V4使用指南(精讲)
2018/09/17 Javascript
[01:03]悬念揭晓 11月26日DOTA2完美盛典不见不散
2017/11/23 DOTA
python快速查找算法应用实例
2014/09/26 Python
在Python中使用__slots__方法的详细教程
2015/04/28 Python
Python编程实现二叉树及七种遍历方法详解
2017/06/02 Python
用python写测试数据文件过程解析
2019/09/25 Python
Python Django中间件,中间件函数,全局异常处理操作示例
2019/11/08 Python
pytorch之添加BN的实现
2020/01/06 Python
详解纯CSS3制作的20种loading动效
2017/07/05 HTML / CSS
人力资源管理专业毕业生自我评价
2013/09/21 职场文书
英文自荐信
2013/12/15 职场文书
平面设计专业大学生职业规划书
2014/03/12 职场文书
安全宣传标语
2014/06/10 职场文书
征用土地赔偿协议书
2014/09/26 职场文书
世界环境日活动总结
2015/02/11 职场文书
医院感染管理制度
2015/08/05 职场文书
2016党员发展对象培训心得体会
2016/01/08 职场文书
JavaScript实现淘宝商品图切换效果
2021/04/29 Javascript
Python答题卡识别并给出分数的实现代码
2021/06/22 Python
vue整合百度地图显示指定地点信息
2022/04/06 Vue.js