2012-10-03 22 views
19

Después de horas de búsqueda en Internet, todavía no pude encontrar una respuesta para mi problema.Cómo vincular un socket a múltiples interfaces

Mi tarea es crear un servidor que acepte sockets desde un número variable de interfaces (dado en un archivo de configuración como eth0, eth1, etc.).

¿Cuál es la manera más fácil de hacer esto? ¿Hay alguna manera de vincular un socket a múltiples interfaces? No he encontrado una manera de hacer eso todavía.
O, ¿tengo que usar INADDR_ANY y de alguna manera averiguar la interfaz a la que se envió el paquete?

¿Hay alguna otra forma de solucionar este problema?

Respuesta

28

Usted ya sea bind(2) un zócalo para todas las interfaces con INADDR_ANY, o crean tomas múltiples y se unen a cada dirección IP de la interfaz deseada. En cualquier caso, configure la opción SO_REUSEADDR en los sockets.

+0

¡Fuiste muy útil, gracias! –

+0

Puede * aceptar * respuestas aquí, ya sabes ... :) –

+0

@NikolaiNFetissov ¿Puedo aceptar más de 65K de límite de conexión cuando uso INADDR_ANY o tengo que unir cada IP por separado para eso? – Etherealone

Cuestiones relacionadas