Есть ли способ получить адрес назначения Mac в ANSI C - PullRequest
0 голосов
/ 19 июля 2010

Есть ли способ получить MAC-адрес назначения, если IP-адрес назначения известен, используя ANSI C? Я бы предпочел сделать это с помощью системного вызова, чтобы ядро ​​имело дело со всем этим, и я мог бы использовать кеш ARP. Я знаю, что могу собрать и отправить свой собственный запрос ARP, но тогда у меня не будет функциональности кеширования и т. Д., Если я сам не реализую его, так что мне кажется, что позволить ядру обрабатывать его - путь.

Ответы [ 2 ]

2 голосов
/ 19 июля 2010

Не точный ответ, потому что это не ANSI C, но вы можете прочитать таблицу arp из /proc/net/arp (то есть в Linux).Вот где arp выглядит.Для любой другой ОС самый простой способ - использовать strace или эквивалент в эквивалентной утилите отображения arp-cache.

0 голосов
/ 22 июля 2010

Я решил отправить свои собственные пакеты ARP и внутренне их кэшировать в своем приложении.Если пункт назначения находится за пределами моей локальной сети, я анализирую /proc/net/route, извлекаю шлюз для данного интерфейса и отправляю пакет arp на шлюз, чтобы получить его macaddress (так как это мак-адрес назначения пакетов, предназначенных вне локальной сети).1002 *

...