2009-04-20 22 views
6

Estoy portando una biblioteca de comunicaciones de Linux a Windows. Sé cuál es mi enfoque en su mayor parte. La biblioteca utiliza todos los marcos de nivel de ethernet en bruto para todas las comunicaciones.Marcos Ethernet sin procesar con Winsock

La biblioteca desde la que realizo la migración utiliza la familia PF_PACKET y la estructura sockaddr_ll. Después de navegar por el sitio winsock de MSDN, no he encontrado una familia/estructura equivalente. ¿Cuál debería ser mi enfoque aquí?

Tengo algunas ideas, pero no estoy seguro si son buenas ideas Podría usar PF_UNSPEC, para el caso no especificado. Podría simplemente pasar el número que PF_PACKET representa (es un corto sin firmar) También podría hacer mi propia estructura sockadddr_ll en Windows.

Ninguna de esas ideas me parece buena, simplemente parecen ser hacks que no funcionan.

Si alguien tiene alguna sugerencia, la agradecería.

Respuesta

3

Supongo que se refiere a Raw Sockets (donde tiene que escribir la capa de red, la capa de transporte y la información de la capa de aplicación). Las nuevas versiones de Windows (XP SP2 y posteriores) tienen un soporte muy limitado para sockets sin formato con muchas restricciones.

More info (vaya a "Limitaciones en Raw Sockets")

la solución, creo, es el uso de WinPcap, lo que le permite send raw packets en esos sistemas.

+0

bien, las limitaciones en los sockets sin procesar no se aplican a mí. Mi aplicación solo sube tan alto como la segunda capa. Es decir, solo necesito desgarrar/recibir tramas de Ethernet, no se necesita TCP/UDP/IP. – devin

+1

En realidad lo hace. Mire el ejemplo del envío de paquetes sin procesar con WinPcap, y encontrará lo que necesita :) – Aziz

+0

Nada debajo de la capa 3 está permitido en las ventanas. – Aziz