我正在尝试从服务器向客户端发送消息
我尝试删除.close并在打印中放置一个while循环,但是它仍然无法正常工作
客户
import socket
s = socket.socket()
host = socket.gethostname()
port = 12345
s.connect((host, port))
while True:
print (s.recv(1024))
服务器
import socket
s = socket.socket()
host = socket.gethostname()
port = 12345
s.bind((host, port))
s.listen(5)
while True:
c, addr = s.accept()
print ('Got connection from', addr)
x = str(input("ënter a message"))
data = x.encode()
c.send(data)
我希望输出是来自服务器的2条消息,但它只发送1条消息,然后关闭连接
答案 0 :(得分:1)
切换您的accept
和while True:
行。接受连接后,请继续发送相同的连接。
请注意,TCP是流协议。没有“消息”的概念,只有一堆字节。如果发送速度足够快,例如:
c.send(b'abc')
c.send(b'def')
然后recv(1024)
可以收到b'abcdef'
。对于更复杂的通信,您必须定义协议和缓冲区recv
,直到确定收到完整的消息为止。在这种情况下,一种简单的方法是读取,直到找到换行符,或者在发送实际消息之前发送指示总消息大小的字节(或更多)。