我正在创建一些第二层框架,用python3进行自动化总线模拟。事实上,数据将毫无问题地发送。通信伙伴将数据返回给我的python脚本。我以root用户身份启动脚本,接收完成。重新启动脚本后,我无法再次接收数据。我得重新开始…现在我在寻找原因。在
实际情况:
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()
正在阻止脚本。我必须手动停止并重新启动。那么它只会工作一次
有人能给我解释这个问题吗?在
我把所有的东西都放在多线程环境中。一个用于发送,一个用于接收。现在它开始工作了。 原因是以太网帧的循环发送有问题。 谢谢你的帮助。。。在
相关问题 更多 >
编程相关推荐