使用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实现在windows服务中新建进程的方法
Jun 30 Python
python指定写入文件时的编码格式方法
Jun 07 Python
Python远程视频监控程序的实例代码
May 05 Python
Python Django框架单元测试之文件上传测试示例
May 17 Python
python程序快速缩进多行代码方法总结
Jun 23 Python
python框架Django实战商城项目之工程搭建过程图文详解
Mar 09 Python
Python常用编译器原理及特点解析
Mar 23 Python
Python实现UDP程序通信过程图解
May 15 Python
Python类成员继承重写的实现
Sep 16 Python
python 装饰器的使用示例
Oct 10 Python
Keras保存模型并载入模型继续训练的实现
Feb 20 Python
Python可变集合和不可变集合的构造方法大全
Dec 06 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得到某段时间区间的时间戳 php定时任务
2012/04/12 PHP
PHP jQuery表单,带验证具体实现方法
2014/02/15 PHP
PHP对文件夹递归执行chmod命令的方法
2015/06/19 PHP
PHP小偷程序的设计与实现方法详解
2016/10/15 PHP
PHP设计模式之原型模式定义与用法详解
2018/04/03 PHP
php实现的rc4加密解密类定义与用法示例
2018/08/16 PHP
Yii2.0框架模型多表关联查询示例
2019/07/18 PHP
JS实现在Repeater控件中创建可隐藏区域的代码
2010/09/16 Javascript
JavaScript字符串对象的concat方法实例(用于连接两个或多个字符串)
2014/10/16 Javascript
Angular 根据 service 的状态更新 directive
2016/04/03 Javascript
基于JavaScript实现树形下拉框
2016/08/10 Javascript
JavaScript中最容易混淆的作用域、提升、闭包知识详解(推荐)
2016/09/05 Javascript
jQuery插件fullPage.js实现全屏滚动效果
2016/12/02 Javascript
jQuery Easyui datagrid editor为combobox时指定数据源实例
2016/12/19 Javascript
详解微信开发中snsapi_base和snsapi_userinfo及静默授权的实现
2017/03/11 Javascript
nodejs中模块定义实例详解
2017/03/18 NodeJs
详解VUE 定义全局变量的几种实现方式
2017/06/01 Javascript
vue弹窗组件的实现示例代码
2018/09/10 Javascript
js中位运算的运用实例分析
2018/12/11 Javascript
javascript 关于赋值、浅拷贝、深拷贝的个人理解
2019/11/01 Javascript
小程序实现密码输入框
2020/11/16 Javascript
[42:24]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第三场 11.27
2020/12/01 DOTA
python判断端口是否打开的实现代码
2013/02/10 Python
在pycharm中使用git版本管理以及同步github的方法
2019/01/16 Python
Python 异步协程函数原理及实例详解
2019/11/13 Python
解决Keras中Embedding层masking与Concatenate层不可调和的问题
2020/06/18 Python
快速一键生成Python爬虫请求头
2021/03/04 Python
Bugatchi官方网站:男士服装在线
2019/04/10 全球购物
.net面试题
2015/12/22 面试题
2013年学期结束动员演讲稿
2014/01/07 职场文书
小学毕业演讲稿
2014/04/25 职场文书
节水口号标语
2014/06/19 职场文书
村党支部书记四风问题个人对照检查材料思想汇报
2014/10/06 职场文书
无锡灵山大佛导游词
2015/02/09 职场文书
财务人员个人工作总结
2015/02/27 职场文书
python 爬取哔哩哔哩up主信息和投稿视频
2021/06/07 Python