使用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程序语言快速上手教程
Jul 18 Python
在Python的Flask框架中使用模版的入门教程
Apr 20 Python
python模拟Django框架实例
May 17 Python
Python网络爬虫中的同步与异步示例详解
Feb 03 Python
VScode编写第一个Python程序HelloWorld步骤
Apr 06 Python
python 两个数据库postgresql对比
Oct 21 Python
django处理select下拉表单实例(从model到前端到post到form)
Mar 13 Python
在Django中预防CSRF攻击的操作
Mar 13 Python
Python HTMLTestRunner可视化报告实现过程解析
Apr 10 Python
Python 字典一个键对应多个值的方法
Sep 29 Python
python操作toml文件的示例代码
Nov 27 Python
python - asyncio异步编程
Apr 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
海贼王:最美的悬赏令!
2020/03/02 日漫
PHP的拦截器实例分析
2014/11/03 PHP
PHP制作登录异常ip检测功能的实例代码
2016/11/16 PHP
关于javascript中this关键字(翻译+自我理解)
2010/10/20 Javascript
JS无限极树形菜单,json格式、数组格式通用示例
2013/07/30 Javascript
我的NodeJs学习小结(一)
2014/07/06 NodeJs
jQuery消息提示框插件Tipso
2015/05/04 Javascript
jQuery 选择同时包含两个class的元素的实现方法
2016/06/01 Javascript
详解基于webpack和vue.js搭建开发环境
2017/04/05 Javascript
微信小程序 实现点击添加移除class
2017/06/12 Javascript
vue项目前端微信JSAPI与外部H5支付相关实现过程及常见问题
2020/04/14 Javascript
JS实现拖拽元素时与另一元素碰撞检测
2020/08/27 Javascript
简单总结Python中序列与字典的相同和不同之处
2016/01/19 Python
python中string模块各属性以及函数的用法介绍
2016/05/30 Python
python numpy数组的索引和切片的操作方法
2018/10/20 Python
pip安装python库的方法总结
2019/08/02 Python
python实现猜拳小游戏
2020/04/05 Python
Python3自定义http/https请求拦截mitmproxy脚本实例
2020/05/11 Python
将pymysql获取到的数据类型是tuple转化为pandas方式
2020/05/15 Python
浅谈opencv自动光学检测、目标分割和检测(连通区域和findContours)
2020/06/04 Python
Pytorch之Tensor和Numpy之间的转换的实现方法
2020/09/03 Python
如何从csv文件构建Tensorflow的数据集
2020/09/21 Python
详解pandas赋值失败问题解决
2020/11/29 Python
pandas 数据类型转换的实现
2020/12/29 Python
matplotlib之pyplot模块坐标轴标签设置使用(xlabel()、ylabel())
2021/02/22 Python
Wedgwood美国官网:英国骨瓷,精美礼品及家居装饰
2018/02/17 全球购物
迎新春趣味活动方案
2014/08/24 职场文书
计划生育证明格式及范本
2014/10/09 职场文书
学校2014年度工作总结
2014/12/06 职场文书
教师思想工作总结2015
2015/05/13 职场文书
禁毒主题班会教案
2015/08/14 职场文书
2016年暑假家长对孩子评语
2015/12/01 职场文书
队列队形口号
2015/12/25 职场文书
java objectUtils 使用可能会出现的问题
2022/02/28 Java/Android
漫改真人电影「萌系男友是燃燃的橘色」公开先导视觉图
2022/03/21 日漫
Ubuntu Server 安装Tomcat并配置systemctl
2022/04/28 Servers