选择模块:套接字服务器遇到类型错误。[Python]
问题直接在于我的套接字服务器中的选择模块:套接字服务器遇到类型错误。[Python],python,select,module,typeerror,Python,Select,Module,Typeerror,问题直接在于我的套接字服务器中的select.select行 r_list, w_list, x_list = select.select(U_Connections + [ss], Username_List, []) 其中: Username_List = [] U_Connections = [] 问题在于用户名\u列表 Username\u List只应该做一件事,那就是存储服务器接收的用户名。每当服务器接收到数据时,它都会检查username\u列表中是否有该用户名(已接收数据)
select.select
行
r_list, w_list, x_list = select.select(U_Connections + [ss], Username_List, [])
其中:
Username_List = []
U_Connections = []
问题在于用户名\u列表
Username\u List
只应该做一件事,那就是存储服务器接收的用户名。每当服务器接收到数据时,它都会检查username\u列表中是否有该用户名(已接收数据)
如果它在那里,它只会继续移动,并忽略接收到的数据
如果不是,它会将数据添加到列表中,然后向所有连接的客户端发送新用户名。这就是程序崩溃的地方
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")
您可以共享包含异常消息的完整trackback吗?因此,Username\u list
不是一个包含套接字、对象或表示文件描述符的整数的列表?在Username\u列表
上选择,您试图实现什么?第二个参数应该是您要开始写入的文件或套接字的列表,select()
将告诉您哪些文件或套接字已准备就绪。我认为Username\u list表示的是一个空列表,它正在等待数据写入某个对象。因此,当我在列表中插入一个字符串,然后while循环在w_列表中为I传递:它将执行我要求它执行的任何操作。我想这是一个不正确的解释…不,这确实是不正确的。您需要给出要写入的select
套接字,当select
在第二个参数中返回它们时,它们就可以写入了。然后将数据直接发送到这些套接字。我可以使用它接收的套接字吗?你是说选择只在w_列表“可用”时才执行它告诉的操作吗。这让我很困惑。
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.