Python第2层以太网帧>接收d

2024-10-01 11:31:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一些第二层框架,用python3进行自动化总线模拟。事实上,数据将毫无问题地发送。通信伙伴将数据返回给我的python脚本。我以root用户身份启动脚本,接收完成。重新启动脚本后,我无法再次接收数据。我得重新开始…现在我在寻找原因。在

实际情况:

  • 带有Ubuntu 18的VirtualBox-->4.18.0-17-generic
  • USB 2网络接口直接连接到虚拟机(适配器为:enx0050b611bbf0)。在

Python:

s = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(3))
s.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 1024)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
s.bind(('enx0050b611bbf0', 3))
s.send(packet)
response = s.recv(1024)
print('Recv: %s' % bytes_to_hex_str(response))
print('Recv length: %i' % len(response))
s.close()

数据包: 它是一个字节数组:

^{pr2}$

问题: 它只起一次作用。第二次启动脚本后,s.recv()正在阻止脚本。我必须手动停止并重新启动。那么它只会工作一次

有人能给我解释这个问题吗?在


Tags: 数据脚本框架soresponsesocketpython3print
1条回答
网友
1楼 · 发布于 2024-10-01 11:31:42

我把所有的东西都放在多线程环境中。一个用于发送,一个用于接收。现在它开始工作了。 原因是以太网帧的循环发送有问题。 谢谢你的帮助。。。在

相关问题 更多 >