Pregunta

Estoy intentando escribir un servidor BOOTP en C #.

Estoy recibir y analizar el paquete BOOTP desde el cliente y tengo que responder con mi dirección IP del servidor.

El problema es:

  • El equipo puede tener varios adaptadores de red
  • El cliente todavía no tiene una dirección IP

¿Hay alguna forma de averiguar qué adaptador de paquete UDP se recibió el?

¿Fue útil?

Solución

Hay varias formas posibles de hacer esto. Enlazar un zócalo separado para cada IP en cada interfaz física, entonces siempre se sabrá cuál es la interfaz del paquete llegó. También puede probar la bandera IP_RECVIF junto con la función de socket recvmsg, aunque no sé si eso es compatible con Windows. Steven tiene ejemplos en la Sección 22.2 y 22.6 de la programación Unix red. Usted puede utilizar el indicador SIOCGIFCONF con ioctl para obtener una lista de las interfaces de la máquina. Existe un programa de ejemplo en la sección 17.6 UNP. Si c # no le dan acceso a estas funciones, pero su compatible con Windows que podría escribir un programa simple C para recoger y actualizar la información de interfaz / IP y luego utilizar mmap para compartir una región de memoria entre su programa de C # y el empadronador interfaz.

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