使用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实现爬虫下载漫画示例
Feb 16 Python
python利用有道翻译实现"语言翻译器"的功能实例
Nov 14 Python
批量将ppt转换为pdf的Python代码 只要27行!
Feb 26 Python
python实现excel读写数据
Mar 02 Python
python中的turtle库函数简单使用教程
Jul 23 Python
python版本五子棋的实现代码
Dec 11 Python
python3+PyQt5 数据库编程--增删改实例
Jun 17 Python
Python字典添加,删除,查询等相关操作方法详解
Feb 07 Python
Django ModelForm操作及验证方式
Mar 30 Python
Python3 Tensorlfow:增加或者减小矩阵维度的实现
May 22 Python
详解Python yaml模块
Sep 23 Python
Python Flask请求扩展与中间件相关知识总结
Jun 11 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实现计数器方法小结
2015/01/05 PHP
PHP判断是否为空的几个函数对比
2015/04/21 PHP
php curl中gzip的压缩性能测试实例分析
2016/11/08 PHP
yii2 url重写并隐藏index.php方法
2018/12/10 PHP
Yii Framework框架开发微信公众平台示例
2020/04/26 PHP
Javascript面象对象成员、共享成员变量实验
2010/11/19 Javascript
JQuery入门—编写一个简单的JQuery应用案例
2013/01/03 Javascript
javascript中的void运算符语法及使用介绍
2013/03/10 Javascript
JS onmousemove鼠标移动坐标接龙DIV效果实例
2013/12/16 Javascript
Linux下使用jq友好的打印JSON技巧分享
2014/11/18 Javascript
深入探密Javascript数组方法
2015/01/08 Javascript
充分发挥Node.js程序性能的一些方法介绍
2015/06/23 Javascript
JS延时器提示框的应用实例代码解析
2016/04/27 Javascript
location.hash保存页面状态的技巧
2016/04/28 Javascript
js实现StringBuffer的简单实例
2016/09/02 Javascript
Java  Spring 事务回滚详解
2016/10/17 Javascript
jQuery+json实现动态创建复杂表格table的方法
2016/10/25 Javascript
Bootstrap基本组件学习笔记之面板(14)
2016/12/08 Javascript
详解Jquery Easyui的验证扩展
2017/01/09 Javascript
微信小程序开发之toast提示插件使用示例
2017/06/08 Javascript
微信小程序实现倒计时功能
2020/11/19 Javascript
Python实现把回车符\r\n转换成\n
2015/04/23 Python
从CentOS安装完成到生成词云python的实例
2017/12/01 Python
python实现AES加密解密
2019/03/28 Python
Django框架组成结构、基本概念与文件功能分析
2019/07/30 Python
Python中注释(多行注释和单行注释)的用法实例
2019/08/28 Python
pytorch 数据处理:定义自己的数据集合实例
2019/12/31 Python
python和js交互调用的方法
2020/06/23 Python
承认错误的检讨书
2014/01/30 职场文书
军训自我鉴定范文
2014/02/13 职场文书
校园学雷锋活动月总结
2014/03/09 职场文书
暑期教师培训方案
2014/06/07 职场文书
2014年高中班主任工作总结
2014/11/08 职场文书
看古人们是如何赞美老师的?
2019/07/08 职场文书
tomcat默认最大连接数及相关调整方法
2022/05/06 Servers
css中:last-child不生效的解决方法
2022/08/05 HTML / CSS