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_PACKET
或socket.htons
。
所以,如果库存库或固件无法做到这一点,我应该选择哪些库,或者如果需要修改固件,我应该如何修改固件?
当前upy固件没有原始套接字实现。你可以检查以下行。原始套接字调度已从 modlwip.c
中删除
如果您想自己修改固件,可以按照以下步骤操作。
- 检查你平台的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
如何在 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_PACKET
或socket.htons
。
所以,如果库存库或固件无法做到这一点,我应该选择哪些库,或者如果需要修改固件,我应该如何修改固件?
当前upy固件没有原始套接字实现。你可以检查以下行。原始套接字调度已从 modlwip.c
中删除如果您想自己修改固件,可以按照以下步骤操作。
- 检查你平台的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