使用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实现的数据结构与算法之快速排序详解
Apr 22 Python
python读取一个目录下所有txt里面的内容方法
Jun 23 Python
python中文编码与json中文输出问题详解
Aug 24 Python
详解python中的线程与线程池
May 10 Python
django ModelForm修改显示缩略图 imagefield类型的实例
Jul 28 Python
如何用OpenCV -python3实现视频物体追踪
Dec 04 Python
python numpy生成等差数列、等比数列的实例
Feb 25 Python
Pytorch 使用不同版本的cuda的方法步骤
Apr 02 Python
使用Keras预训练好的模型进行目标类别预测详解
Jun 27 Python
Pycharm及python安装详细教程(图解)
Jul 31 Python
python 使用三引号时容易犯的小错误
Oct 21 Python
再也不用花钱买漫画!Python爬取某漫画的脚本及源码
Jun 09 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默认安装产生系统漏洞
2006/10/09 PHP
php Rename 更改文件、文件夹名称
2011/05/24 PHP
php _autoload自动加载类与机制分析
2012/02/10 PHP
yii2局部关闭(开启)csrf的验证的实例代码
2017/07/10 PHP
php实现socket推送技术的示例
2017/12/20 PHP
原生JS实现Ajax通过GET方式与PHP进行交互操作示例
2018/05/12 PHP
php实现多站点共用session实现单点登录的方法详解
2019/09/18 PHP
php实现大文件断点续传下载实例代码
2019/10/01 PHP
Track Image Loading效果代码分析
2007/08/13 Javascript
JSON语法五大要素图文介绍
2012/12/04 Javascript
node.js中的fs.openSync方法使用说明
2014/12/17 Javascript
微信小程序中的swiper组件详解
2017/04/14 Javascript
w3c编程挑战_初级脚本算法实战篇
2017/06/23 Javascript
jQuery 开发之EasyUI 添加数据的实例
2017/09/26 jQuery
JavaScript如何实现图片处理与合成
2020/05/29 Javascript
Vue + ts实现轮播插件的示例
2020/11/10 Javascript
基于element-ui封装表单金额输入框的方法示例
2021/01/06 Javascript
[01:02:25]2014 DOTA2华西杯精英邀请赛 5 24 iG VS DK
2014/05/26 DOTA
400多行Python代码实现了一个FTP服务器
2012/05/10 Python
举例讲解Python编程中对线程锁的使用
2016/07/12 Python
Python 读取指定文件夹下的所有图像方法
2018/04/27 Python
Python+OpenCV目标跟踪实现基本的运动检测
2018/07/10 Python
python生成器用法实例详解
2019/11/22 Python
python 6.7 编写printTable()函数表格打印(完整代码)
2020/03/25 Python
世界上最全面的汽车零部件和配件集合:JC Whitney
2016/09/04 全球购物
如果让你测试一台高速激光打印机,你都会进行哪些测试
2012/12/04 面试题
秦兵马俑教学反思
2014/02/07 职场文书
《小熊住山洞》教学反思
2014/02/21 职场文书
调查研究项目计划书
2014/04/29 职场文书
先进单位事迹材料
2014/12/25 职场文书
学校中层领导培训心得体会
2016/01/11 职场文书
pytorch中[..., 0]的用法说明
2021/05/20 Python
修改MySQL的数据库引擎为INNODB的方法
2021/05/26 MySQL
Spring Boot 排除某个类加载注入IOC的操作
2021/08/02 Java/Android
Golang原生rpc(rpc服务端源码解读)
2022/04/07 Golang
golang操作redis的客户端包有多个比如redigo、go-redis
2022/04/14 Golang