使用python實(shí)現(xiàn)tcp自動(dòng)重連
操作系統(tǒng): CentOS 6.9_x64
python語(yǔ)言版本: 2.7.13
問(wèn)題描述
現(xiàn)有一個(gè)tcp客戶端程序,需定期從服務(wù)器取數(shù)據(jù),但由于種種原因(網(wǎng)絡(luò)不穩(wěn)定等)需要自動(dòng)重連。
測(cè)試服務(wù)器示例代碼:
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()
運(yùn)行效果:
(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
討論
這里只是個(gè)簡(jiǎn)單的示例代碼,實(shí)現(xiàn)了python的tcp自動(dòng)重連。
相關(guān)文章
pyhton中__pycache__文件夾的產(chǎn)生與作用詳解
這篇文章主要介紹了pyhton中__pycache__文件夾的產(chǎn)生與作用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
Python中兩個(gè)列表數(shù)字相加的4種方法示例詳解
這篇文章主要給大家介紹了關(guān)于Python中兩個(gè)列表數(shù)字相加的4種方法,我們可以使用Python的加號(hào)和減號(hào)運(yùn)算符來(lái)實(shí)現(xiàn)兩個(gè)數(shù)字的相加減,需要的朋友可以參考下2023-08-08
Python3 log10()函數(shù)簡(jiǎn)單用法
在本文中我們給大家整理了關(guān)于Python3中l(wèi)og10()函數(shù)的基本用法和相關(guān)知識(shí)點(diǎn),需要的可以學(xué)習(xí)下。2019-02-02
Pycharm配置lua編譯環(huán)境過(guò)程圖解
這篇文章主要介紹了Pycharm配置lua編譯環(huán)境過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
Python 裝飾器@,對(duì)函數(shù)進(jìn)行功能擴(kuò)展操作示例【開(kāi)閉原則】
這篇文章主要介紹了Python 裝飾器@,對(duì)函數(shù)進(jìn)行功能擴(kuò)展操作,結(jié)合實(shí)例形式分析了裝飾器的相關(guān)使用技巧,以及開(kāi)閉原則下的函數(shù)功能擴(kuò)展,需要的朋友可以參考下2019-10-10
使用sklearn對(duì)多分類的每個(gè)類別進(jìn)行指標(biāo)評(píng)價(jià)操作
這篇文章主要介紹了使用sklearn對(duì)多分類的每個(gè)類別進(jìn)行指標(biāo)評(píng)價(jià)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06
Python調(diào)試神器之PySnooper的使用教程分享
對(duì)于每個(gè)程序開(kāi)發(fā)者來(lái)說(shuō),調(diào)試幾乎是必備技能。本文小編就來(lái)給大家介紹一款非常好用的調(diào)試工具,它能在一些場(chǎng)景下,大幅度提高調(diào)試的效率, 那就是 PySnooper,希望大家喜歡2023-02-02
Python Django 通用視圖和錯(cuò)誤視圖的使用代碼
這篇文章主要介紹了Python Django 通用視圖和錯(cuò)誤視圖的使用,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04
用Python實(shí)現(xiàn)2024年春晚劉謙魔術(shù)
昨晚春晚上劉謙的兩個(gè)魔術(shù)表演都非常精彩,忍不住用編程去模擬一下這個(gè)過(guò)程,所以本文給大家用Python實(shí)現(xiàn)2024年春晚劉謙魔術(shù),文中通過(guò)代碼示例給大家介紹的非常詳細(xì),需要的朋友可以參考下2024-02-02
Python學(xué)習(xí)之函數(shù)的定義與使用詳解
函數(shù)是具有某種特定功能的代碼塊,可以重復(fù)使用(在前面數(shù)據(jù)類型相關(guān)章節(jié)。它使得我們的程序更加模塊化,不需要編寫(xiě)大量重復(fù)的代碼。本文將詳細(xì)介紹Python中函數(shù)的定義與使用,感興趣的可以學(xué)習(xí)一下2022-03-03

