2012-02-07 19 views
5

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

+0

El otro dispositivo, es decir un dispositivo que es remota, es decir, no en la misma red local? – Dervall

+0

el otro dispositivo también está en la misma red. –

Respuesta

5

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.

+0

Gracias, pero ¿cómo invocar el comando arp desde mi programa C++? No estoy muy familiarizado con esto ... :( –

+0

@Achuthananda MP: en OS X y otros Unix-alikes, usaría fork y exec. No sé cómo lo haría en Windows. – JeremyP

1

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:

  1. 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.

  2. 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.

Cuestiones relacionadas