MAC层上的Micropython Raw套接字

时间:2019-03-13 22:01:13

标签: sockets esp8266 ethernet raw-sockets micropython

在Micropython中,如何在MAC层上创建原始套接字呢?

UNIX等效项是:

eth_p_all=3
netif='wlan0'
s=socket.socket(socket.AF_PACKET,socket.SOCK_RAW,socket.htons(eth_p_all))
s.bind((netif,0))

其中一个,尚不清楚如何获取接口名称,并且没有socket.AF_PACKETsocket.htons

因此,如果无法使用库存库或固件来执行此操作,我应该选择哪个库,或者如果需要修改固件,我应该如何精确地修改固件?

1 个答案:

答案 0 :(得分:0)

当前的最新固件没有原始套接字实现。您可以检查以下行。原始套接字调度已从modlwip.c中删除

https://github.com/micropython/micropython/blob/68a5d6fe7746850ce049b8bf295bfce1382383f3/extmod/modlwip.c#L712

如果要自行修改固件,则可以按照以下步骤进行操作。

  • 检查平台的原始SDK是否支持原始套接字。 (例如,cc3200使用TI的cc3200 SDK,它支持原始套接字)
  • 修改modlwip.c

有一个非官方端口(realtek的ameba系列)支持原始套接字。您可以从这个开始。

https://github.com/wylinks/micropython-ameba/blob/ameba/ports/ameba/mphelper/mods/modlwip.c