我正在创建一个聊天界面,当前,服务器必须先发送一条消息才能使聊天正常进行。
如果客户端首先发送消息,则服务器无法看到该消息,直到服务器向客户端发送消息为止。
我的问题:
这是服务器代码:
serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serv.bind(("", 8080))
serv.listen(5)
while True:
c, addr = serv.accept()
print("Connection recieved from", addr)
while True:
strig = str(input("Enter your message to the client: "))
c.send(strig.encode())
thing = c.recv(1024)
message = list(str(thing))
message.remove("b")
printable = ""
for item in message:
printable += item
print(printable)
strig = str(input("Enter your message to the client: "))
c.send(strig.encode())
thing = c.recv(1024)
message = list(str(thing))
message.remove("b")
printable = ""
for item in message:
printable += item
print(printable)
这是客户端代码:
from time import sleep
s = socket.socket()
port = 8080
s.connect(("10.0.0.92", port))
while True:
thing = str(s.recv(1024))
message = list(thing)
message.remove("b")
#message.remove("/")
printable = ""
for item in message:
printable += item
print(printable)
your = str(input("Enter your message to the server: "))
s.send(your.encode())
thing = str(s.recv(1024))
message = list(thing)
message.remove("b")
#message.remove("/")
printable = ""
for item in message:
printable += item
print(printable)
your = str(input("Enter your message to the server: "))
s.send(your.encode())
提前致谢!!
p.s.我希望一个人成为服务器,一个人成为客户端。请不要告诉我让这两个人成为客户。
最佳答案
您的服务器是单线程的。 input
等待输入,因此在没有用户输入的情况下永远不会进入recv
。创建一个线程来读取客户端输入,并创建一个线程来询问和发送消息。在客户端,您将需要类似的东西。
关于python - 如何检查是否从客户端收到字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60907977/