我现在遇到的问题是关于这个聊天客户端的问题,我已经尝试了好几天了。应该是我原来的聊天客户端的升级版,只有先收到消息才能回复人。
因此,在四处询问和研究人员后,我决定使用 select.select 来处理我的客户。
问题是它和往常一样有同样的问题。
*循环在接收时卡住了,直到它接收到一些东西才会完成*
这是我到目前为止写的:
import select
import sys #because why not?
import threading
import queue
print("New Chat Client Using Select Module")
HOST = input("Host: ")
PORT = int(input("Port: "))
s = socket(AF_INET,SOCK_STREAM)
print("Trying to connect....")
s.connect((HOST,PORT))
s.setblocking(0)
# Not including setblocking(0) because select handles that.
print("You just connected to",HOST,)
# Lets now try to handle the client a different way!
while True:
# Attempting to create a few threads
Reading_Thread = threading.Thread(None,s)
Reading_Thread.start()
Writing_Thread = threading.Thread()
Writing_Thread.start()
Incoming_data = [s]
Exportable_data = []
Exceptions = []
User_input = input("Your message: ")
rlist,wlist,xlist = select.select(Incoming_data,Exportable_data,Exceptions)
if User_input == True:
Exportable_data += [User_input]
您可能想知道为什么我在那里有线程和队列。
那是因为人们告诉我我可以通过使用线程和队列来解决问题,但是在阅读了文档之后,寻找与我的案例相匹配的视频教程或示例。我仍然完全不知道如何使用它们来使我的客户工作。
有人可以帮我吗?我只需要找到一种方法让客户尽可能多地输入消息,而无需等待回复。这只是我尝试的方法之一。