2010-01-14 17 views

Respuesta

15

(segunda vez Ok suerte ..)

FYI hay otra pregunta aquí perform connect() on specific network adapter lo largo de las mismas líneas ...

Según The Cable Guy

Windows XP y Windows Server® 2003 utilice el modelo de host débil para los envíos y recibe para todas las interfaces IPv4 y el modelo de host fuerte para los envíos y recibe para todos los IPv6 interfaces. Usted no puede configurar este comportamiento. La pila TCP/IP Siguiente Generación en Windows Vista y Windows Server 2008 apoya fuerte host envía y recibe para IPv4 e IPv6 por defecto en todas las interfaces excepto el Teredo interfaz túnel para un relé Teredo específico de huésped.

Para responder a su pregunta (correctamente, esta vez) en Windows XP y Windows Server 2003 IP4 no, pero para IP6 sí. Y para Windows Vista y Windows 2008 sí (excepto en ciertas circunstancias).

También desde http://www.codeguru.com/forum/showthread.php?t=487139

En Windows, una llamada a bind() afecta selección de la tarjeta sólo el tráfico entrante, el tráfico no saliente. Por lo tanto, en un cliente se ejecuta en un sistema de multitarjeta (es decir, más de una tarjeta de interfaz), es la pila de red que selecciona la tarjeta para usar, y hace su selección basado únicamente en el IP de destino , que a su vez se basa en en la tabla de enrutamiento. Una llamada a bind() no afectará la elección de la tarjeta de ninguna manera.

que tiene algo que ver con algo que se llama un "Sistema de Weak End" modelo ("Débil E/S"). Vista cambió a un modelo E/S fuerte , por lo que el problema podría no surgir en Vista. Pero todas las versiones anteriores de Windows usaban el modelo E/S débil.

Con un débil modelo de E/S, que es la tabla de enrutamiento que decide qué tarjeta se utiliza para el tráfico saliente en un sistema multitarjeta .

A ver si estos hilos ofrecen algunas idea: "la unión toma local de multitarjeta anfitrión en Windows XP no funciona"

en http://www.codeguru.com/forum/showthread.php?t=452337

"Cómo conectar un puerto a un determinado Networkcard ? " en http://www.codeguru.com/forum/showthread.php?t=451117. Este hilo menciona la función CreateIpForwardEntry(), que (creo) se puede utilizar para crear una entrada en la tabla de enrutamiento de modo que todo el tráfico IP saliente con un servidor especificado se enruta a través de un adaptador especificado.

"Trabajar con tarjetas Ethernet 2" en http://www.codeguru.com/forum/showthread.php?t=448863

"extraño comportamiento de vinculación de multitarjeta sistema" en http://www.codeguru.com/forum/showthread.php?t=452368

Espero que ayude!

+0

Gracias, A menos que me falta algo, ninguna respuesta es relevante, ya que SO_BINDTODEVICE no es relevante para Windows. Sospecho que su resumen es correcto aunque, aunque no tengo la evidencia. – Ofir

+0

¡Ups, lo tienes! Actualicé mi respuesta anterior con mejor información, ¡lo siento! – Ezz

+0

Tenga en cuenta que los modelos de host débiles y fuertes no afectan cómo se enruta el tráfico enviado desde un socket. Es decir. El modelo de host fuerte garantiza que el tráfico que sale de un adaptador de red utilice la dirección IP asignada de ese adaptador, pero no afecta cómo la pila de red en el host selecciona el adaptador de salida para usar realmente. Esto en realidad se explica en el enlace "The Cable Guy" arriba, así como en Wikipedia: https://en.wikipedia.org/wiki/Host_model –

Cuestiones relacionadas