Pregunta

Estoy haciendo un proyecto en el que tengo que diseñar paquetes personalizados. Es decir, que tiene que tener el control de la cabecera de cada paquete. Estoy tratando de hacer esto usando sockets. Básicamente, lo que tengo que hacer es lo siguiente:

SOCKET s = socket(PF_UNSPEC, SOCK_RAW, ethernet_type);

El ethernet_type es algo que se adapte, no estándar, como 0xAAAA. Estoy usando htons (). Además, es muy preferible para mí no utilizo Winpcap.

En este momento, estoy consiguiendo el error 10043, el protocolo no es compatible.

El mensaje de error parece sugerir que puedo configurar el protocolo en mi sistema, pero no tengo ni idea de cómo hacerlo.

Se dice:

Protocolo no soportado. El protocolo solicitado no se ha configurado en el sistema, no existe ninguna aplicación para ello. Por ejemplo, una llamada socket solicita un socket SOCK_DGRAM, pero especifica un protocolo corriente.

Hay algunas cuestiones diferentes, así que si alguien tiene alguna entrada a todo lo agradecería mucho.

¿Fue útil?

Solución

Según estos artículos , Microsoft eliminó el soporte de conector directo desde Windows en una revisión no extraíble. Por lo que puede estar fuera de suerte a menos que desee cambiar a otro sistema operativo.

Otros consejos

Creo que la adición de nuevos protocolos para la llamada socket sería algo bastante difícil. Habría que asegurarse de que zócalo soporta esa llamada. Creo que tendría que volver a compilar la función socket y yo no creo que sea fácilmente posible en Windows.

La elaboración de paquetes personalizados no requiere que usted para crear un nuevo protocolo

Creo que la manera correcta de especificar un conector directo es como esto

SOCKET s;
s = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);

Si usted está realmente tratando de jugar con Ethernet cruda como sus nombres de variables sugieren, entonces o bien utiliza el controlador winpcap o escribir su propio conductor

No creo que no hay otra solución "fácil" de Ethernet en bruto. winpcap es bastante fácil, así que es posible que desee comprobar que funciona

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top