我有以下图表:发送:客户端--(tx_socket)-->服务器回复:服务器--(rx_socket)-->客户端def connect(self)->无:self.tx_socket = socket.socket(socket.AF_INET,
我有下图:
发送: 客户端 --(tx_socket)--> 服务器
回复: 服务器 --(rx_socket)--> 客户端
def connect(self) -> None:
self.tx_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
self.tx_socket.bind(("", self.tx_src_port))
self.rx_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
self.rx_socket.settimeout(3.0)
self.rx_socket.bind(("", self.rx_dst_port))
但是,在等待服务器回复时总是会出现超时错误,即使 Wireshark 显示回复数据包:
self.tx_socket.sendto(command_str, (self.dst_addr, self.tx_dst_port))
self.rx_socket.recv(4096) # <--- TimeoutError
不知何故,可以通过预先使用 rx_socket 从客户端向服务器发送一个字符来解决此问题:
self.rx_socket.sendto("\n".encode('ascii'), (self.dst_addr, self.tx_dst_port))
但我不明白为什么会发生这种情况。此外,Linux 中不存在同样的问题。
你能给我解释一下吗?任何回复都非常感谢。
python 套接字 recv 超时,而 Wireshark 显示已收到 UDP 数据包(windows)
下载声明:
本站所有软件和资料均为软件作者提供或网友推荐发布而来,仅供学习和研究使用,不得用于任何商业用途。如本站不慎侵犯你的版权请联系我,我将及时处理,并撤下相关内容!
帖子版权声明
1、本帖标题:python 套接字 recv 超时,而 Wireshark 显示已收到 UDP 数据包(windows) 本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com
除非注明,本帖由ayeh 在本站《sockets》 版块原创发布,
转载请注明出处!