我正在创建一些第2层框架,以使用Python 3进行自动化总线仿真。实际上,数据将毫无问题地发送。通讯伙伴将数据返回给我的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()
数据包: 这是一个字节数组:
0xff 0xff 0xff 0xff 0xff 0xff 0xde 0xad 0xbe 0xef 0x12 0x34 0x88 0xcd 0x20 0x00 0xa9 0xd7 0xdb 0x8f 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
问题:
它只能工作一次。第二次启动脚本后,s.recv()
正在阻止脚本。我必须手动停止它并重新启动它。然后它工作了一次……
有人可以向我解释问题吗?
答案 0 :(得分:0)
我将所有内容都放在多线程环境中。一种用于发送,一种用于接收。现在正在工作。 原因是以太网帧的循环发送出现问题。 感谢您的帮助...