2012-02-27 13 views
5

Vorrei utilizzare la classe Java HttpURLConnection per connettersi a un dispositivo particolare su una (rete locale). Ho bisogno di utilizzare una scheda di rete specifica perché la macchina che eseguirà il mio programma ha 2 schede di rete installate. Un adattatore si trova su una rete aziendale più ampia e viene assegnato dinamicamente a un indirizzo IP mentre il secondo è una rete locale alla macchina e ha un IP statico. È questa seconda rete locale a cui voglio limitare il mio programma.HttpURLConnection e utilizzo di una specifica scheda di rete

L'utilizzo di HttpURLConnection è comodo perché mi libera di dover analizzare la risposta del server ecc. E di ottenere direttamente i dati di cui ho bisogno invece di fare qualcosa come this. Tuttavia, poiché devo limitare le mie richieste HTTP a una specifica scheda di rete, non posso essere sicuro al 100% che le mie richieste HTTP vengano inviate SOLO tramite l'adattatore desiderato. Ho ragione nella mia comprensione di come funziona HttpURLConnection, cioè si basa sul sistema operativo per selezionare la scheda di rete appropriata da utilizzare?

+2

http://stackoverflow.com/questions/1008781/is-it-possibile-per-specificare-che-network-interfaccia-per-a-jvm-or-a-a-del-uso- –

risposta

7

Con Java semplice è possibile associare un Socket a un NetworkInterface selezionato.

Se è necessario il supporto del protocollo HTTP con possibilità di controllare l'interfaccia di rete da cui connettersi, è necessario utilizzare Apache HTTP Client.

È necessario fornire un parametro ConnRoutePNames.LOCAL_ADDRESS, vedere i dettagli qui: http://hc.apache.org/httpcomponents-client-ga/tutorial/html/connmgmt.html.

UPDATE:

Dal 4.3 ConnRoutePNames è deprecato, si prega di utilizzare RequestConfig e invece la sua RequestConfig.Builder.

+0

Molto utile, grazie qwe! – Kerry

+0

Grazie! Non più Qwe :) –

Problemi correlati