Necesito encontrar la dirección MAC del dispositivo desde el que mi dispositivo recibe las solicitudes TCP, obtengo la dirección IP del dispositivo por punto final pero necesito averiguar la dirección MAC del dispositivo. Mi aplicación se ejecutará en Windows y Linux, así que sugiérame un método de plataforma cruzada para encontrar la dirección MAC. ¿Alguna biblioteca de impulso me ayudará a hacer lo mismo?Encontrar MacAddress desde la dirección IP de una manera independiente de la plataforma
Respuesta
En primer lugar, no puede encontrar la dirección MAC para ninguna interfaz de red que no esté en la misma red de área local. Esa información no se transmite más allá del enrutador.
Hay una herramienta de línea de comandos llamada arp
que está disponible en Unix y también Windows que enumerará las direcciones IP y las direcciones MAC de las interfaces que han estado en comunicación con su PC. es decir,
arp -a
en Windows da algo así como:
Interface: 9.175.198.236 --- 0x2
Internet Address Physical Address Type
9.175.198.129 00-1b-53-46-fa-7f dynamic
y en un aspecto de tipo Unix como por igual:
foo.bar.com (10.27.68.72) at 00:50:56:AE:00:0B [ether] on eth0
baz.bar.com (10.27.68.77) at 00:50:56:AE:00:10 [ether] on eth0
? (10.27.68.1) at 00:50:5A:1B:44:01 [ether] on eth0
Usted puede intentar invocar y analizar la salida mediante programación.
Gracias, pero ¿cómo invocar el comando arp desde mi programa C++? No estoy muy familiarizado con esto ... :( –
@Achuthananda MP: en OS X y otros Unix-alikes, usaría fork y exec. No sé cómo lo haría en Windows. – JeremyP
Lo primero a tener en cuenta es que en la capa TCP, no conoce las direcciones MAC.
Para su caso, supongo que se puede hacer dos cosas:
uso arp o escribir una pieza de código similar al que se ve arp de Mac, ya la dirección IP. El problema con este enfoque es que no funcionará en los casos en que la fuente se encuentre en otra red.
escriba su servidor de tal manera que solicite esta información del cliente que envía la solicitud TCP. Esto se puede hacer después del establecimiento de TCP. El cliente también debería poder buscar la dirección MAC de la máquina para la IP dada.
arp código fuente está disponible en el siguiente enlace, ¡tome la pieza de código que le interese! Es un código c por lo que debería funcionar bien.
http://www.opensource.apple.com/source/network_cmds/network_cmds-328/arp.tproj/arp.c
- 1. de manipulación específicas de Windows en una plataforma independiente manera
- 2. ¿Cómo obtener la dirección IP desde $ SSH_CLIENT
- 3. Longitud y latitud desde la dirección IP
- 4. ¿Cómo usar la función de conjunto de nodos de una manera independiente de la plataforma?
- 5. ¿La plataforma WCF es independiente?
- 6. ¿Encontrar una dirección IP pública en Python?
- 7. ¿Cómo encontrar el número de puerto de la dirección IP?
- 8. ¿La plataforma de archivos objeto es independiente?
- 9. Obtenga la dirección IP de la máquina
- 10. Pasar variables de entorno a una JVM, de manera independiente de la plataforma
- 11. Simplemente encontrar la dirección IP del servidor de
- 12. ¿Cuál es la mejor manera de diseñar un servidor GWT "independiente de la plataforma"?
- 13. ¿Cómo encontrar la dirección IP del cliente conectado al servidor?
- 14. ¿La mejor manera de restringir el acceso por dirección IP?
- 15. Use el enhebrado y las tomas en C de una manera independiente de la plataforma
- 16. ¿Cómo compararías la dirección IP?
- 17. ¿Por qué la JVM no es independiente de la plataforma, dado que Java (el idioma) es independiente de la plataforma?
- 18. Mapeo de la memoria independiente de la plataforma [archivo] IO
- 19. ¿Cómo encontrar la dirección IP del dispositivo activo AirPlay?
- 20. Búsqueda de la dirección IP del usuario
- 21. manera definitiva para obtener la dirección IP del usuario php
- 22. ¿Manera independiente de la plataforma para obtener el directorio de fuentes?
- 23. Obtener la dirección IP de los visitantes
- 24. ruta de concatenación - plataforma independiente - "/", "\"
- 25. Python: obtenga la dirección IP local utilizada para enviar datos IP a una dirección IP remota específica
- 26. Obteniendo la dirección IP de la solicitud con Pyramid
- 27. Geocodificar una dirección IP?
- 28. Obtener la dirección IP de una interfaz en Linux
- 29. Obteniendo la dirección IP local
- 30. ¿Cómo obtener la dirección IP?
El otro dispositivo, es decir un dispositivo que es remota, es decir, no en la misma red local? – Dervall
el otro dispositivo también está en la misma red. –