gpt4 book ai didi

python - 在python套接字服务器中接受多个客户端

转载 作者:行者123 更新时间:2023-12-01 04:05:33 26 4
gpt4 key购买 nike

我正在尝试用 python 构建一个简单的套接字服务器:

import socket
import threading
import time


def handle(conn_addr):
print("Someone Connected")
time.sleep(4)
print("And now I die")


host = ''
port = 5000
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.bind((host,port))
except socket.error as e:
print(str(e))

s.listen(2)

while True:
threading.Thread(handle(s.accept())).start()


print("Should never be reached")

套接字服务器应该同时接受多个客户端。我尝试通过从 shell 的多个选项卡调用 telnet localhost 5000 来测试其功能,但是我得到的模式是

Someone Connected
And now I die
Someone Connected
And now I die

而不是

Someone Connected
Someone Connected
Someone Connected

我在 4 秒内调用 telnet 命令,因此它应该有 2 条连续的连接消息,但只有在前一个套接字断开连接后才会返回该消息。这是为什么?我该如何解决这个问题?

最佳答案

这是一个典型的错误。您调用了handle()(它休眠了 4 秒),然后尝试根据其结果创建一个线程。目标应该是函数引用,参数应该单独传递。

threading.Thread(target=handle, args=(s.accept(),)).start()

在此版本中,主线程等待accept,然后创建运行handle的线程。

关于python - 在python套接字服务器中接受多个客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35671861/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com