首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >套接字编程阻塞过程

套接字编程阻塞过程
EN

Stack Overflow用户
提问于 2018-02-28 15:02:24
回答 1查看 37关注 0票数 0

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

代码非常简单明了

代码语言:javascript
复制
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

s.sendto(data_to_send, (host, port))
received_data = s.recvfrom(1024)

我的问题是,sendtorecvfrom方法被阻塞了吗?也就是说,当我调用sentdo时,我的代码将停止并等待recvfrom,因为,我在本地主机上到处闲逛并测试客户端和服务器模型,并手动注入3秒和4秒的随机睡眠时间来模拟现实生活中的延迟,并且我将获得ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host,以防延迟有点高。

EN

回答 1

Stack Overflow用户

发布于 2018-03-02 21:03:02

这些调用可能会阻塞正在执行它们的线程。

如果您的操作系统内核的出站缓冲区已满,并且需要时间来容纳您想要发送的消息,则sendto将被阻塞。因为远程应用程序还没有调用recvfrom,所以sendto不会阻塞。

recvfrom会一直阻塞,直到有东西可以从你的操作系统内核的入站缓冲区中读取。如果远程对等方尚未发送任何内容或消息尚未到达,则recvfrom将阻止。

此外,可能在您这一端发生了一些错误的配置。ConnectionResetError可能会发生,因为某个地方有防火墙。延迟与问题无关,因为UDP没有连接和超时。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49023717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档