#sockets #esp8266 #ethernet #raw-sockets #micropython
#сокеты #esp8266 #ethernet #необработанные сокеты #micropython
Вопрос:
Как именно можно было бы создать необработанный сокет на уровне MAC в Micropython?
Эквивалент 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
.
Итак, если нет способа сделать это с помощью стандартных библиотек или прошивки, какие библиотеки мне следует выбрать, или, если требуется модификация прошивки, как именно мне следует модифицировать прошивку?
Ответ №1:
В текущей прошивке upy нет реализации необработанного сокета. Вы можете проверить следующую строку. Отправка необработанного сокета была удалена из modlwip.c
Если вы хотите самостоятельно модифицировать прошивку, вы можете следовать инструкциям.
- Проверьте, поддерживает ли исходный SDK вашей платформы сокет raw или нет. (например, cc3200 использует SDK cc3200 от TI и поддерживает необработанный сокет)
- Измените modlwip.c
Существует неофициальный порт (серия ameba от realtek), поддерживающий сокет raw. Вы могли бы начать с этого.
https://github.com/wylinks/micropython-ameba/blob/ameba/ports/ameba/mphelper/mods/modlwip.c