使用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的类变量和成员变量用法实例教程
Aug 25 Python
浅谈五大Python Web框架
Mar 20 Python
Mac 上切换Python多版本
Jun 17 Python
Python使用numpy实现BP神经网络
Mar 10 Python
Python操作word常见方法示例【win32com与docx模块】
Jul 17 Python
Python使用pymysql从MySQL数据库中读出数据的方法
Jul 25 Python
Python3 Post登录并且保存cookie登录其他页面的方法
Dec 28 Python
Python合并同一个文件夹下所有PDF文件的方法
Mar 11 Python
使用jupyter notebook运行python和R的步骤
Aug 13 Python
PIP和conda 更换国内安装源的方法步骤
Sep 21 Python
python 自动识别并连接串口的实现
Jan 19 Python
总结三种用 Python 作为小程序后端的方式
May 02 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
JAVA/JSP学习系列之六
2006/10/09 PHP
php 验证码实例代码
2010/06/01 PHP
php使用json_encode对变量json编码
2014/04/07 PHP
php操作(删除,提取,增加)zip文件方法详解
2015/03/12 PHP
PHP实现限制IP访问的方法
2017/04/20 PHP
javascript中普通函数的使用介绍
2013/12/19 Javascript
node.js中的console.time方法使用说明
2014/12/09 Javascript
JQuery中使用on方法绑定hover事件实例
2014/12/09 Javascript
jQuery中clone()方法用法实例
2015/01/16 Javascript
jQuery实现本地预览上传图片功能
2016/01/08 Javascript
解析JavaScript面向对象概念中的Object类型与作用域
2016/05/10 Javascript
js 自带的 map() 方法全面了解
2016/08/16 Javascript
nodejs获取微信小程序带参数二维码实现代码
2017/04/12 NodeJs
js+html5实现页面可刷新的倒计时效果
2017/07/15 Javascript
vue.js 获取select中的value实例
2018/03/01 Javascript
VUE 实现滚动监听 导航栏置顶的方法
2018/09/11 Javascript
在Vue-cli里应用Vuex的state和mutations方法
2018/09/16 Javascript
JavaScript实现背景自动切换小案例
2019/09/27 Javascript
[01:38]完美世界高校联赛决赛花絮
2018/12/02 DOTA
python3.0 字典key排序
2008/12/24 Python
在Python中操作字典之update()方法的使用
2015/05/22 Python
Python实现更改图片尺寸大小的方法(基于Pillow包)
2016/09/19 Python
Python网络爬虫项目:内容提取器的定义
2016/10/25 Python
Python使用requests发送POST请求实例代码
2018/01/25 Python
python 输入一个数n,求n个数求乘或求和的实例
2018/11/13 Python
使用python爬取微博数据打造一颗“心”
2019/06/28 Python
django认证系统 Authentication使用详解
2019/07/22 Python
python中with用法讲解
2020/02/07 Python
python读取csv文件指定行的2种方法详解
2020/02/13 Python
彪马俄罗斯官网:PUMA俄罗斯
2019/07/13 全球购物
英国最受欢迎的母婴精品品牌:JoJo Maman BéBé
2021/02/17 全球购物
大学生见习期满自我鉴定
2014/09/13 职场文书
2014年幼儿园教学工作总结
2014/12/04 职场文书
音乐会主持人开场白
2015/05/28 职场文书
《揠苗助长》教学反思
2016/02/20 职场文书
2019最新劳动仲裁申请书!
2019/07/08 职场文书