2011-02-03 13 views
8

Come disabilitare temporaneamente una connessione di rete in Java?Disabilitare la connessione di rete

+4

tirare il cavo fuori .... –

+1

Sì, sono d'accordo con Mitch ... il modo più semplice che si sta andando a trovare è quello di tirare semplicemente il cavo o disabilitare l'adattatore di rete –

risposta

1

Sfortunatamente, la disabilitazione di una connessione di rete è specifica del sistema operativo e non sono a conoscenza di alcuna API Java standard per accedere a tali funzioni del sistema operativo. Probabilmente dovresti fare qualche codifica specifica del sistema operativo, ad es. tramite JNI o ​​eseguendo programmi esterni, per ciascun sistema operativo che si intende supportare. Il programma Java avrebbe anche bisogno di essere invocato con i privilegi appropriati per poter interagire con le interfacce di rete.

2

Questi funzionano? su Windows:

Runtime.getRuntime().exec ("ipconfig/release"); 

su Linux (supponendo che l'interfaccia di rete è chiamato eth0:.

Runtime.getRuntime().exec ("ifconfig eth0 down"); 
+0

io uso questo metodo su un'applicazione in cui ho appena rilasciato la connessione per tutta la connessione wireless. E poi lo rinnovo dopo che l'applicazione è stata completata. Ho usato questa pagina come riferimento: http://compnetworking.about.com/od/workingwithipaddresses/a/ipconfig.htm –

3

un modo abbastanza complicato, ma fattibile per farlo è quello di creare una fabbrica di implementazione presa personalizzato È possibile registrare chiamando Socket.setSocketImplFactory().

Il tuo stabilimento personalizzato dovrà quindi restituire implementazioni di socket personalizzate che semplicemente lanciano un IOException ad ogni tentativo di connessione.

Si noti che questo arresta solo le connessioni in uscita, se si desidera interrompere l'applicazione accettando anche le connessioni in entrata, si dovrà giocare un trucco simile su ServerSocket s.

+1

Ho implementato una libreria per test di tolleranza agli errori utilizzando questo approccio con SocketImplFactory - anzi è fattibile ! http://stackoverflow.com/a/43056981/504452 – bedrin

1

(supponendo che questo è sotto Windows, Vista o versioni successive)

È possibile disabilitare l'interfaccia tramite WMI, a cui si accede tramite un ponte, come JACOB.

0

è possibile disattivare tutte le interfacce che utilizzano percorso wmic win32_networkadapter dove PhysicalAdapter = True chiamata disabilita

1

Sniffy si permette di block outgoing network connections nelle vostre applicazioni Java - si getterà un ConnectException ogni volta che si tenta di stabilire una nuova connessione all'host limitato.

Basta aggiungere -javaagent:sniffy.jar=5559 agli argomenti JVM e puntare il browser su localhost:5559 - verrà aperta una pagina Web con tutte le connessioni rilevate ai sistemi downstream e ai controlli per disabilitare determinate connessioni.

Sniffy connections console

Se l'applicazione è basata-web, si può anche farlo direttamente dalla vostra applicazione aperta in del browser - vedere una demo qui: http://demo.sniffy.io/owners?lastName=

Fare clic su un widget di nell'angolo in basso a destra, selezionare la scheda Network Connections, disabilitare e connettersi allo localhost:8967 (database) e ricaricare una pagina per vederla in azione.

Disclaimer: io sono l'autore di Sniffy

Problemi correlati