禁用网络连接

时间:2011-02-03 23:53:36

标签: java

我怎样才能暂时禁用Java中的网络连接?

6 个答案:

答案 0 :(得分:4)

执行此操作的一种相当复杂但可行的方法是创建自定义套接字实现工厂。您可以致电Socket.setSocketImplFactory()注册。

然后,您的自定义工厂必须返回自定义套接字实现,只需在每次连接尝试时抛出IOException

请注意,这只会停止传出连接,如果您希望停止应用程序接受传入连接,则必须在ServerSocket上播放类似的技巧。

答案 1 :(得分:2)

这些会有用吗? 在Windows上:

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

在linux上(假设网络接口名为eth0:

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

答案 2 :(得分:1)

不幸的是,禁用网络连接是特定于操作系统的,我不知道任何用于访问这些操作系统功能的标准Java API。您可能不得不进行一些特定于操作系统的编码,例如通过JNI或执行外部程序,为您打算支持的每个操作系统。还需要使用适当的权限调用Java程序以允许混乱网络接口。

答案 3 :(得分:1)

(假设这是在Windows,Vista或更高版本下)

您可以通过WMI禁用界面,可以通过JACOB等网桥进行访问。

答案 4 :(得分:1)

Sniffy允许您在Java应用程序中block outgoing network connections - 每当您尝试与受限主机建立新连接时,它将抛出ConnectException

只需将-javaagent:sniffy.jar=5559添加到您的JVM参数中,并将浏览器指向localhost:5559 - 它将打开一个网页,其中包含所有已发现的与下游系统和控件的连接,以禁用某些连接。

Sniffy connections console

如果您的应用程序是基于网络的,您甚至可以直接从浏览器中打开的应用程序进行操作 - 请参阅此处的演示:http://demo.sniffy.io/owners?lastName=

单击右下角的小部件,选择Network Connections选项卡,禁用并连接到localhost:8967(数据库)并重新加载页面以查看其实际效果。

免责声明:我是Sniffy的作者

答案 5 :(得分:0)

您可以使用wmic路径win32_networkadapter禁用所有接口,其中PhysicalAdapter = True呼叫禁用