簡體   English   中英

Python第2層以太網幀->接收數據

[英]Python layer 2 Ethernet frames --> Receiving data

我正在創建一些第2層框架,以使用Python 3進行自動化總線仿真。實際上,數據將毫無問題地發送。 通訊伙伴將數據返回給我的python腳本。 我以root身份啟動腳本,接收已完成。 重新啟動腳本后,無法再次接收數據。 我必須重新開始…現在我正在尋找原因。

實際情況:

  • 帶有Ubuntu 18的VirtualBox-> 4.18.0-17-generic
  • 直接連接到虛擬機的USB 2網絡接口(適配器為:enx0050b611bbf0)。

蟒蛇:

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()將阻止腳本。 我必須手動停止它並重新啟動它。 然后它一次工作了……

有人可以向我解釋問題嗎?

我把所有東西都放在多線程環境中。 一種用於發送,一種用於接收。 現在正在工作。 原因是以太網幀的循環發送出現問題。 謝謝您的幫助...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM