每当我从客户端向服务器发送消息(反之亦然)时,我都要等到我从另一方发送消息才能注册。
server.py
B_val
client.py
loss_val
示例:
服务器发送消息
客户端没有任何事情发生
客户端发送消息
服务器和客户端都会收到他们的消息
这将一遍又一遍地发生
答案 0 :(得分:1)
嗯,很明显,你必须等待#34;另一方"因为您的代码中有raw_input
个调用,等待用户输入内容...
也就是说,你也可以收回1024个字节,但发送量要少得多。因此,recv()通常会挂起,直到它有足够的数据(但并非总是如此,在这种情况下它会返回更少)。请记住,通过低级套接字通信,您必须自己正确地处理消息大小/边界!
您可以就终止字节达成一致,例如" \ n"表示消息之间的边界,或者另一种策略是将每个消息前置几个字节,表示其后面的消息大小。然后你recv()确切地说那个数量。或者只为每条消息发送固定数量的数据。
剩下的是你还需要处理send()和recv()有时不发送或接收所有内容的事实:它们具有重要的返回值。使用sendall
和recv
MSG_WAITALL
标记可以解决大多数问题,但无法保证。
首先阅读此https://docs.python.org/3/howto/sockets.html#using-a-socket。