1
我的代码工作不错,但如果在工作过程中的任何错误都提高脚本将崩溃,不接收来自插座端口的任何其他请求,直到我手动重新运行它...重新连接到插座后crashe
#!/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后崩溃或关闭程序与控制+ c我不能重新运行它约4-5分钟由于socket in use
错误!