2012-02-27 13 views
5

Me gustaría usar la clase Java HttpURLConnection para conectarme a un dispositivo en particular en una (red local). Necesito usar un adaptador de red específico porque la máquina que ejecutará mi programa tiene 2 adaptadores de red instalados. Un adaptador se encuentra en una red más amplia de la compañía y se le asigna dinámicamente un IP, mientras que el segundo es una red local a la máquina y tiene una IP estática. Es esta segunda red local a la que quiero restringir mi programa.HttpURLConnection & Using A Specific Network Adapter

Usar HttpURLConnection es conveniente porque me alivia tener que analizar la respuesta del servidor, etc. y obtener directamente los datos que necesito en lugar de hacer algo como this. Sin embargo, debido a que debo restringir mis solicitudes HTTP a un adaptador de red específico, no puedo estar 100% seguro de que mis solicitudes HTTP se envíen SOLAMENTE a través del adaptador deseado. ¿Tengo razón en mi comprensión de cómo funciona HttpURLConnection, es decir, depende del sistema operativo para seleccionar el adaptador de red apropiado que se utilizará?

+2

http://stackoverflow.com/questions/1008781/is-it-possible-to-specify-which-network-interface-for-a-jvm-or-ide-to-use –

Respuesta

7

Con Java simple, solo podrá enlazar un Socket con un seleccionado.

Si necesita soporte de protocolo HTTP con la capacidad de controlar la interfaz de red desde la que se conectará, necesitará usar Apache HTTP Client.

Deberá proporcionar un parámetro ConnRoutePNames.LOCAL_ADDRESS, vea los detalles aquí: http://hc.apache.org/httpcomponents-client-ga/tutorial/html/connmgmt.html.

ACTUALIZACIÓN:

Desde 4.3 ConnRoutePNames está en desuso, por favor utilice RequestConfig y su RequestConfig.Builder lugar.

+0

Muy útil, gracias Qwe! – Kerry

+0

¡Gracias! Ya no es Qwe :) –