首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >崩溃后重新连接到套接字

崩溃后重新连接到套接字
EN

Stack Overflow用户
提问于 2017-02-15 14:37:44
回答 2查看 34关注 0票数 1

我的代码运行良好,但如果在工作过程中出现任何错误,所有脚本都将崩溃,并且不会从套接字端口接收任何其他请求,直到我手动重新运行它……

代码语言:javascript
复制
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import socket
import sys
import threading
import glob
import requests

HOST = 'xxx.xxx.xxx.xxx'
PORT = 5050 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print ('Socket created')
try:
    s.bind((HOST, PORT))
except socket.error as mssg:
    print ('Bind failed. Error Code : ' + str(mssg[0]) + ' Message ' + mssg[1])
    sys.exit()
print ('Socket bind complete')
s.listen(10)
print ('Socket now listening')
def clientthread(conn,addrr):
        while True:
                data = conn.recv(1024)
                rcv_data = data.decode("utf-8").strip()
                if(len(rcv_data) != 0):
                        print(data)
                        reply =b"111\n\r"
                        r = requests.post("http://domain.comw.php?action=u&d="+rcv_data, data = {'act': rcv_data})
                        conn.send(reply)
                else:
                        print('errr')
                        break
while True:
    conn, addr = s.accept()
    print ('Connected with ' + addr[0] + ':' + str(addr[1]))
    t = threading.Thread(target=clientthread ,args=(conn,addr,))
    t.daemon=True
    t.start()
s.close()

出现意外错误后,如何自动重新绑定套接字?!

还有其他愚蠢的事情是在linux崩溃或关闭control+c程序后,由于socket in use错误,我无法重新运行它大约4-5分钟!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-26 22:09:43

在任何套接字意外中断后

操作系统将状态保持为活动状态以避免任何数据丢失

所以你必须告诉操作系统尽快释放端口,以便尝试重新连接

代码语言:javascript
复制
.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
票数 1
EN

Stack Overflow用户

发布于 2017-02-15 15:35:54

就像这样

代码语言:javascript
复制
while True:
    try:
        # open socket and do your stuff
    except Exception as e:
        # log
        # close socket
        # maybe sleep a couple of seconds
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42242265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档