套接字编程-我们可以使用for循环从同一个套接字发送多个sendto()吗


lines = f.readlines()
client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
for line in lines:
client.sendto(line.encode(), (serverName,serverport))
res,address = client.recvfrom(1024)
res = res.decode()

代码不会在for循环的第二次迭代中发送请求。我对如何处理这件事感到困惑。

server.py

lines = "hellonworldnmultinline".splitlines()
client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
for line in lines:
client.sendto(line.encode(), (serverName,serverport))
# recvfrom will block **until** it gets a reply
res,address = client.recvfrom(1024)
res = res.decode()

客户端.py

...
while True:
data,address = server.recvfrom(1024)
print(f"RECV: {data!r}")
# allow a small delay to make sure the other end is actively waiting on a response when you send
time.sleep(0.1)
server.sendto(b"OKrn",address)
print("Replied so server can go on")

由于udp本质上是有损耗的(尽管通常不是(,您可能仍然希望在server.py脚本中的客户端上设置超时。。。或者通过简单地移除res,addres = client.recvfrom(...)行来移除对响应的期望

最新更新