使用python实现tcp自动重连

 更新时间:2017年07月02日 09:04:37   作者:Mike_Zhang  
下面小编就为大家带来一篇使用python实现tcp自动重连实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。

操作系统: 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实现二叉树结构及三种遍历

    什么是二叉树:每个节点最多有两个子树的树结构,通常子树被称作“左子树”(left subtree)和“右子树”(right subtree) 二叉树由两个对象组成,一个是节点对象,一个是树对象,需要的朋友可以参考下
    2021-06-06
  • 聊聊Python String型列表求最值的问题

    聊聊Python String型列表求最值的问题

    这篇文章主要介绍了Python String型列表求最值的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-01-01
  • CentOS7下安装python3.6.8的教程详解

    CentOS7下安装python3.6.8的教程详解

    这篇文章主要介绍了CentOS7下安装python3.6.8的教程,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • pycharm下pyqt4安装及环境配置的教程

    pycharm下pyqt4安装及环境配置的教程

    这篇文章主要介绍了pycharm下pyqt4安装及环境配置的教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • Pandas中常用的七个时间戳处理函数使用总结

    Pandas中常用的七个时间戳处理函数使用总结

    在零售、经济和金融等行业,数据总是由于货币和销售而不断变化,生成的所有数据都高度依赖于时间。如果这些数据没有时间戳或标记,实际上很难管理所有收集的数据。本文为大家准备了Pandas中常用的七个时间戳处理函数,需要的可以参考一下
    2022-04-04
  • 详解Python对JSON中的特殊类型进行Encoder

    详解Python对JSON中的特殊类型进行Encoder

    这篇文章主要介绍了详解Python对JSON中的特殊类型进行Encoder,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Python正则表达式的应用详解

    Python正则表达式的应用详解

    这篇文章主要介绍了Python中正则表达式的详细教程,正则表达式是Python学习进阶当中的重要内容,需要的朋友可以参考下,希望能给你带来帮助
    2021-08-08
  • pyx文件 生成pyd 文件用于 cython调用的实现

    pyx文件 生成pyd 文件用于 cython调用的实现

    这篇文章主要介绍了pyx文件 生成pyd 文件用于 cython调用的实现方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • python实现ModBusTCP协议的client功能

    python实现ModBusTCP协议的client功能

    Modbus TCP 是一种基于 TCP/IP 协议栈的 Modbus 通信协议,它用于在工业自动化系统中进行设备之间的通信,只要通过pymodbus或pyModbusTCP任意模块就可以实现,本文采用pymodbus,感兴趣的朋友跟随小编一起看看吧
    2023-10-10
  • python+Django实现防止SQL注入的办法

    python+Django实现防止SQL注入的办法

    这篇文章主要介绍了python+Django实现防止SQL注入的办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10

最新评论