2011-02-03 18 views
8

¿Cómo podría desactivar temporalmente una conexión de red en Java?Deshabilitar la conexión de red

+4

cable de tracción a cabo .... –

+1

Sí, estoy de acuerdo con Mitch ... la manera más fácil que vas a encontrar es simplemente tirar del cable o deshabilite el adaptador de red –

Respuesta

1

Desafortunadamente, la desactivación de una conexión de red es específica para el sistema operativo y no conozco ninguna API Java estándar para acceder a esas características del sistema operativo. Probablemente tendrías que hacer alguna codificación específica del sistema operativo, p. a través de JNI o ​​ejecutando programas externos, para cada sistema operativo que pretenda apoyar. El programa Java también necesitaría ser invocado con los privilegios adecuados para que pueda interferir con las interfaces de red.

2

¿Funcionarían? en Windows:

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

En Linux (suponiendo que la interfaz de red se llama eth0:.

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

utilizo este método en una aplicación donde simplemente lanzo la conexión para todas las conexiones inalámbricas. Y luego la renuevo después de que mi aplicación está lista. Utilicé esta página como referencia: http://compnetworking.about.com/od/workingwithipaddresses/a/ipconfig.htm –

3

una manera bastante complicado pero factible hacer esto es crear una fábrica de aplicación toma personalizado Puede registrar llamando al Socket.setSocketImplFactory().

Su fábrica personalizada tendrá que devolver implementaciones de socket personalizadas que simplemente lanzan un IOException en cada intento de conexión.

Tenga en cuenta que esto solo detiene las conexiones salientes, si desea evitar que su aplicación también acepte conexiones entrantes, tendrá que jugar un truco similar en ServerSocket s.

+1

Implementé una biblioteca para pruebas de tolerancia a fallas usando este enfoque con SocketImplFactory - de hecho es factible ! http://stackoverflow.com/a/43056981/504452 – bedrin

1

(suponiendo que esto es bajo Windows, Vista o posterior)

Puede desactivar una interfaz a través de WMI, que se puede acceder a través de un puente como JACOB.

0

Puede desactivar todas las interfaces utilizando una ruta que wmic win32_networkadapter donde PhysicalAdapter = True Desactivar llamada

1

Sniffy que permite a block outgoing network connections en sus aplicaciones Java - arrojará un ConnectException cada vez que intente establecer una nueva conexión de host restringido.

Simplemente agregue -javaagent:sniffy.jar=5559 a los argumentos de su JVM y apunte su navegador a localhost:5559 - se abrirá una página web con todas las conexiones descubiertas a los sistemas y controles posteriores para deshabilitar ciertas conexiones.

Sniffy connections console

Si se basa la Web sus aplicaciones, incluso se puede hacer directamente desde la aplicación abierta en el navegador - ver una demostración aquí: http://demo.sniffy.io/owners?lastName=

Haga clic en un widget en la esquina inferior derecha, seleccione Network Connections pestaña, deshabilite y conecte a localhost:8967 (base de datos) y vuelva a cargar una página para verla en acción.

responsabilidad: yo soy el autor de Sniffy

Cuestiones relacionadas