在人们的帮助下,我制作了一个更好的聊天客户端:
他们告诉我,如果我不想在等待消息时被 .recv 阻塞,我需要使用线程、类、函数和队列来做到这一点。
所以我遵循了一个特定的人给我的一些帮助,在那里我从一个类中创建了一个线程,然后定义了一个应该读取传入消息并打印它们的函数。
我还创建了一个功能,允许您输入要发送的东西。
事情是,当我运行程序时。没发生什么事。
有人可以帮忙指出什么问题吗?(我已经提出问题并研究了3天,但没有得到任何结果,所以我确实尝试了)
from socket import *
import threading
import json
import select
print("Client Version 3")
HOST = input("Connect to: ")
PORT = int(input("On port: "))
# Create Socket
s = socket(AF_INET,SOCK_STREAM)
s.connect((HOST,PORT))
print("Connected to: ",HOST,)
#-------------------Need 2 threads for handling incoming and outgoing messages--
# 1: Create out_buffer:
Buffer = []
rlist,wlist,xlist = select.select([s],Buffer,[])
class Incoming(threading.Thread):
# made a function a thread
def Incoming_messages():
while True:
for i in rlist:
data = i.recv(1024)
if data:
print(data.decode())
# Now for outgoing data.
def Outgoing():
while True:
user_input=("Your message: ")
if user_input is True:
Buffer += [user_input.encode()]
for i in wlist:
s.sendall(Buffer)
Buffer = []
感谢您的浏览,也感谢 Tony The Lion 的建议