MAC 层上的 Micropython 原始套接字

Micropython Raw Socket on MAC Layer

如何在 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

所以,如果库存库或固件无法做到这一点,我应该选择哪些库,或者如果需要修改固件,我应该如何修改固件?

当前upy固件没有原始套接字实现。你可以检查以下行。原始套接字调度已从 modlwip.c

中删除

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

如果您想自己修改固件,可以按照以下步骤操作。

  • 检查你平台的origin SDK是否支持raw socket。 (例如cc3200使用TI的cc3200 SDK,支持raw socket)
  • 修改modlwip.c

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

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