【发布时间】:2015-06-21 04:10:54
【问题描述】:
我需要让一个基本的 python 服务器作为守护进程运行,但是当我将线程设置为作为守护进程运行时,套接字不再监听。我尝试与客户端连接以向其发送文件,但出现连接错误。当我省略将其设置为守护进程的部分时,它工作得很好。建议?谢谢
服务器代码:
import socket
import sys
import threading
HOST = "localhost"
PORT = 3000
exit = False
def handle_client(client):
global exit
filename = client.recv(50).decode()
client.send(b"/ok")
if filename == '':
client.close()
return
elif filename == '/kill':
exit = True
client.send(b'killing server...\n')
killserver = socket.socket()
killserver.connect((HOST, PORT))
killserver.close()
client.send(b'success.\n')
client.close()
return
f = open(filename, "wb")
data = client.recv(1024)
while(data):
f.write(data)
data = client.recv(1024)
f.close()
print("Wrote file " + filename)
client.close()
def server():
servsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
servsock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
servsock.bind((HOST,PORT))
print("[INFO]: listening on " + str(PORT))
servsock.listen(10)
while True:
client, addr = servsock.accept()
if exit is True:
print("[INFO]: server received kill request")
break
print("[INFO]: connection from " + addr[0])
hc = threading.Thread(target=handle_client, args=(client,))
hc.start()
servsock.close()
s = threading.Thread(target=server)
s.setDaemon(True)
s.start()
【问题讨论】:
标签: python sockets server daemon