使用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实现的redis分布式锁功能示例
May 29 Python
Anaconda 离线安装 python 包的操作方法
Jun 11 Python
Python中pandas模块DataFrame创建方法示例
Jun 20 Python
pygame游戏之旅 游戏中添加显示文字
Nov 20 Python
python 提取key 为中文的json 串方法
Dec 31 Python
python批量图片处理简单示例
Aug 06 Python
pytorch 更改预训练模型网络结构的方法
Aug 19 Python
解决python多行注释引发缩进错误的问题
Aug 23 Python
Python中xml和dict格式转换的示例代码
Nov 07 Python
浅谈如何使用python抓取网页中的动态数据实现
Aug 17 Python
python 列表推导和生成器表达式的使用
Feb 01 Python
宝塔更新Python及Flask项目的部署
Apr 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中获取url与物理路径的总结
2013/06/21 PHP
php中substr()函数参数说明及用法实例
2014/11/15 PHP
两个php日期控制类实例
2014/12/09 PHP
PHP Static延迟静态绑定用法分析
2016/03/16 PHP
php中加密解密DES类的简单使用方法示例
2020/03/26 PHP
JavaScript判断两种格式的输入日期的正确性的代码
2007/03/25 Javascript
FormValid0.5版本发布,带ajax自定义验证例子
2007/08/17 Javascript
浅说js变量
2011/05/25 Javascript
jQuery中使用Ajax获取JSON格式数据示例代码
2013/11/26 Javascript
浅谈javascript六种数据类型以及特殊注意点
2013/12/20 Javascript
使用GruntJS构建Web程序之合并压缩篇
2014/06/06 Javascript
动态载入js提高网页打开速度的方法
2014/07/04 Javascript
JS实现Fisheye效果动感放大菜单代码
2015/10/21 Javascript
jQuery实现动态生成表格并为行绑定单击变色动作的方法
2017/04/17 jQuery
手机注册发送验证码倒计时的简单实例
2017/11/15 Javascript
JS实现区分中英文并统计字符个数的方法示例
2018/06/09 Javascript
vue + webpack如何绕过QQ音乐接口对host的验证详解
2018/07/01 Javascript
使用vue点击li,获取当前点击li父辈元素的属性值方法
2018/09/12 Javascript
详解微信小程序实现仿微信聊天界面(各种细节处理)
2019/02/17 Javascript
vue实现分页栏效果
2019/06/28 Javascript
解决vue中axios设置超时(超过5分钟)没反应的问题
2020/09/04 Javascript
用ReactJS和Python的Flask框架编写留言板的代码示例
2015/12/19 Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
2019/01/17 Python
Python 单例设计模式用法实例分析
2019/09/23 Python
自定义Django Form中choicefield下拉菜单选取数据库内容实例
2020/03/13 Python
英国演唱会订票网站:Ticket Selection
2018/03/27 全球购物
菲律宾购物网站:Lazada菲律宾
2018/04/05 全球购物
Sarenza德国:法国最大的时尚鞋和包包网上商店
2019/06/08 全球购物
大学同学聚会邀请函
2014/01/19 职场文书
《要下雨了》教学反思
2014/02/17 职场文书
会计员岗位职责
2014/03/15 职场文书
卫生巾广告词
2014/03/18 职场文书
大学生撤销处分思想汇报
2014/09/12 职场文书
检察院院长群众路线教育实践活动个人整改措施
2014/10/04 职场文书
PostgreSQL13基于流复制搭建后备服务器的方法
2022/01/18 PostgreSQL
MySQL实现字段分割一行转多行的示例代码
2022/07/07 MySQL