我正在尝试使用一个简单的服务器来接收/发送消息,但是遇到了一个我无法解决的问题。在添加线程之前,它工作正常,因此我认为问题出在线程上,但不确定在哪里/为什么。
NeverConnect
错误是import socket
import ssl
import threading
cert = 'server.crt'
key = 'server.key'
HOST = ''
PORT = 8444
ADDR = (HOST, PORT)
bind_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
bind_socket.bind(ADDR)
context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
context.load_cert_chain(cert, key)
def get_secrets():
d = "my_data"
return d.encode('utf-8')
def handle_client(new_socket, from_addr):
while True:
try:
secure_socket = None
secure_socket = context.wrap_socket(new_socket, server_side=True)
msg = secure_socket.read().decode('utf-8')
print(f"[SERVER] Message received {msg}")
if msg.startswith('[001]'):
print(f'Received Message')
d = get_secrets()
secure_socket.send(d)
else:
secure_socket.send(b'I hear you!')
except KeyboardInterrupt:
print()
break
finally:
if secure_socket:
secure_socket.close()
bind_socket.close()
def begin():
bind_socket.listen(5)
print(f"[LISTENING] Server is listening on {HOST} port {PORT}")
while True:
secure_socket = None
new_socket, from_addr = bind_socket.accept()
thread = threading.Thread(target=handle_client, args=(new_socket, from_addr))
thread.start()
print(f"f[ACTIVE CONNECTIONS] {threading.activeCount() - 2}")
if __name__ == '__main__':
begin()
,如果我删除线程,那么它可以工作,但是我需要使用线程来支持多个连接。