gpt4 book ai didi

Python:如何识别从哪个套接字接收数据?

转载 作者:太空宇宙 更新时间:2023-11-03 18:48:07 25 4
gpt4 key购买 nike

情况:服务器接收连接的客户端,并等待它们发出请求。

问题:当客户端连接时,服务器为它们创建的套接字被分配变量clientsocket。当客户提出请求时,他们将从大厅的客户列表中删除。但是,如果两个客户端连接但不发出请求,则最后一个连接的客户端将成为变量 clientsocket

问题的影响:如果第一个连接的客户端决定发出请求,变量clientsocket将从大厅列表中删除。但是,clientsocket 不会引用第一个客户端,而是引用第二个客户端(或最后一个连接的客户端)。因此,当第二个发出请求时,会生成一个错误,指出无法从大厅中删除 clientsocket,因为它不再存在于大厅列表中。与此同时,客户端 1 仍然这样做。

这是执行我正在讨论的内容的代码片段:

rlist,wlist,xlist = select.select([Listeningsocket]+ Connection_List,[],[])
for i in rlist:
if i == Listeningsocket:
clientsocket,address = Listeningsocket.accept()
Connection_List.append(clientsocket)

continue
else:
try:
data = i.recv(512)
except IOError:
data = ""
if data:
clientsocket = # <--- UPDATE CLIENT WITH CORRECT SOCKET
Request_Type = str(data.decode())

正如你所看到的,我需要做的是确保当我接收数据时,发送数据的clientsocket成为变量clientsocket,而不是最后一个连接的。

data = i.recv(512) 但是有没有办法确定哪个套接字发送了这个?

尝试过谷歌搜索,但我认为没有人遇到这个问题。我希望这不是太具体。我确信其他人可能也想确定发送数据的套接字。

最佳答案

一遍又一遍地使用全局可见的clientsocket是一个等待发生的事故。您应该只需更改代码以使用 i - 这也是一个套接字。

data = i.recv(512) but is there any way to determine what socket sent this

就像我说的,i 就是那个套接字。

关于Python:如何识别从哪个套接字接收数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18999078/

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