套接字编程阻塞程序

时间:2018-02-28 07:02:24

标签: python sockets udp

我正在尝试在python中使用UDP之间创建一个套接字。

代码非常简单

results

我的问题是,s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.sendto(data_to_send, (host, port)) received_data = s.recvfrom(1024) sendto被阻止了吗? 也就是说,当我调用recvfrom时,我的代码将停止并等待sentdo,因为,我正在四处闲逛并在我的localhost上测试客户端和服务器模型,并手动注入3和4的随机休眠时间模拟现实生活延迟的秒数,如果延迟有点高,我得recvfrom

1 个答案:

答案 0 :(得分:0)

这些调用可能阻止他们正在执行的线程。

如果操作系统内核的出站缓冲区已满,

sendto将阻止,并且需要时间才能容纳您愿意发送的消息。 sendto因为远程应用程序尚未调用recvfrom而无法阻止。

recvfrom将阻塞,直到从操作系统内核的入站缓冲区中读取内容。如果远程对等方没有发送任何内容或邮件尚未到达,recvfrom将阻止。

此外,您可能还会遇到一些错误配置。 ConnectionResetError可能会发生,因为某处有防火墙。延迟与问题无关,因为UDP没有连接和超时。

相关问题