0

问题直接出select.select在我的套接字服务器中的线路上。

r_list, w_list, x_list = select.select(U_Connections + [ss], Username_List, [])

在哪里:

Username_List = []
U_Connections = []

问题在于Username_List

Username_List只应该做一件事,那就是存储服务器接收到的用户名。每当服务器接收到数据时,它都会检查它是否在Username_List.

如果它在那里,它会继续前进,并忽略接收到的数据。

如果不是,它将数据添加到列表中,然后向所有连接的客户端发送新用户名。这是程序崩溃的地方。

if data:
    translated_data = data.decode()
    print(translated_data)
    print("2")
    if translated_data in Username_List:
        pass
    else:
        translated_data_string = str(translated_data)
        Username_List.append(translated_data_string)    <--- HERE
        print("3")

一旦这个阶段完成,while 循环就会重新执行。并在此过程中遇到一个TypeError. 每当将任何内容添加到w_list.

我做错了什么,我应该如何使用该select模块来完成这项工作?

我需要做的就是将用户名附加到列表中,然后如果它收到的用户名不在现有列表中,则将其发送给每个人。

我一直在尝试解决此问题,并环顾四周,但似乎找不到解决方法。

我读到这个:

“换句话说:每个参数必须是一个平面序列,不允许嵌套。”

这个线程中。但我真的不明白做错了什么。

服务器的完整代码在这里except:的pastebin上 (注意我有一个TypeError

如果有人可以请解释我如何没有正确解释选择模块,我将不胜感激。我不想问愚蠢的问题。

遇到的错误:

Traceback (most recent call last):
  File "C:\Users\Owatch\Documents\Unisung\Produced Content\NetSendClient[0.7]\NetSendClient[0.7]\NetSendClient\files\Program_Files\Username_Server.py", line 23, in <module>
    r_list, w_list, x_list = select.select(U_Connections + [ss], Username_List, [])
TypeError: argument must be an int, or have a fileno() method.
4

0 回答 0