Cómo cambiar el orden de las interfaces de red devuelto por WSAIoctl con SIO_GET_INTERFACE_LIST código de control

StackOverflow https://stackoverflow.com/questions/1916452

  •  20-09-2019
  •  | 
  •  

Pregunta

Es allí una manera de dictar la orden de las interfaces de red devuelto por el Win32 WinSock WSAIoctl la función del SIO_GET_INTERFACE_LIST funcionalidad?

Antecedentes:

Tenemos un grupo heterogéneo de CORBA sistema donde un nameservice ejecutando el AS/TAO CORBA aplicación en Windows ha ACE/TAO servicios basados registrada con lo que los clientes implementan utilizando el IIOP.NET CORBA aplicación necesita usar.El IIOP.En la RED de los clientes están en un equipo de Windows.El AS/TAO de la máquina tiene varias interfaces de red (sólo uno de los cuales es accesible por el cliente de la máquina) y por lo tanto varias direcciones IP.

El IIOP.NET el cliente puede conectarse a la nameservice y recuperar un proxy a la registrada en el servidor CORBA objeto que necesita para usar, pero cuando se trata de usar el proxy se lanza excepciones.

Basado en la forma en que se emplea demasiado tiempo de depuración, hemos llegado a la conclusión de que el problema es que IIOP.NET sólo intenta conectarse a la primera dirección IP en la CORBA IOR cadena que el nombre de servicio devuelve cuando se le preguntó por el servicio.El IOR cadena es una descripción del objeto, incluyendo su dirección IP(es).La mayoría de los clientes CORBA intentará conectarse con el objeto de servidor utilizando todas las direcciones en el IOR cadena, pero parece que IIOP.NET no hace eso.

El AS/TAO código que genera el IOR cadena, utiliza el WinSock WSAIoctl comando con el código de control SIO_GET_INTERFACE_LIST para volver a la lista de interfaces de red en el cuadro y, a continuación, agrega todas ellas a la IOR de la cadena.El problema es que la primera dirección IP es la que no está en la red que el IIOP cliente, de modo que cuando el IIOP.NET cliente intenta conectarse al servidor de objetos utilizando la dirección IP es evidente que falla y nunca intenta utilizar la dirección IP correcta.Otros clientes CORBA como AS/TAO trate de hacer todas las direcciones IP y los que trabajan en esta configuración.

Porque yo no soy un networking/CORBA, dios, no es realista para mí para intentar cambiar ACE/TAO o IIOP.NET y tenemos buenas razones para tener los dos, separados por las redes en este sistema, pero si el primero, por defecto dirección IP devuelta por WSAIOCtl fue el que las necesidades del cliente, que podría resolver el problema, ya que la dirección IP, se convertiría en la primera dirección IP en el IOR cadena y IIOP.NET use esa dirección IP correctamente.Así que, ¿hay una manera fiable para causar WSAIoctl para devolver las interfaces de red en un orden diferente?Yo no veo nada documentado en MSDN en esto, por desgracia.

Gracias,

Dave

¿Fue útil?

Solución

He encontrado la solución y te estoy dando la respuesta en caso de que alguien más viene contra esto.El AS/TAO globo tiene un parámetro de línea de comandos que le permite anular los resultados devueltos por WSAIoctl.El parámetro de línea de comandos es -ORBListenEndpoints y que le permite proporcionar un punto y coma lista delimitada por comas de los nombres de host y direcciones IP.Google -ORBListenEndpoints y vas a encontrar la sintaxis exacta.Los servidores que se inicializa con el ORBE de recibir ese parámetro de línea de comandos se escucha en el especificado extremo(s).He probado esta y funciona.

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