Java 禁用网络连接

Java 禁用网络连接,java,Java,如何在Java中临时禁用网络连接?不幸的是,禁用网络连接是特定于操作系统的,我不知道有任何用于访问这些操作系统功能的标准Java API。您可能需要为您打算支持的每个操作系统执行一些特定于操作系统的编码,例如通过JNI或执行外部程序。Java程序还需要以适当的权限进行调用,以便能够处理网络接口。这些功能是否有效? 在windows上: Runtime.getRuntime ().exec ("ipconfig/release"); 在linux上(假设网络接口称为eth0: Runtime.

如何在Java中临时禁用网络连接?

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

这些功能是否有效? 在windows上:

Runtime.getRuntime ().exec ("ipconfig/release");
在linux上(假设网络接口称为eth0:

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

一种相当复杂但可行的方法是创建一个自定义套接字实现工厂。您可以通过调用来注册它

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

请注意,这只会停止传出连接,如果您想停止应用程序接受传入连接,则必须在
ServerSocket
s上玩类似的把戏。

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


您可以禁用接口via,它可以通过网桥访问。

您可以使用wmic path
win32\u networkadapter
禁用所有接口,其中
PhysicalAdapter=True
调用禁用允许您在Java应用程序中进行调用-每当您尝试建立blish到受限制主机的新连接

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

如果您的应用程序是基于web的,您甚至可以直接从浏览器中打开的应用程序执行此操作-请参阅此处的演示:

单击右下角的一个小部件,选择
网络连接
选项卡,禁用并连接到
本地主机:8967
(数据库),然后重新加载一个页面以查看其运行情况


免责声明:我是Sniffy

的作者是的,我同意Mitch的观点…你能找到的最简单的方法就是拔出电缆,或者禁用网络适配器。我在一个应用程序上使用这种方法,我只需释放所有无线连接的连接。然后在我的应用程序完成后续订。我使用此页面作为参考:I have使用SocketImplFactory的这种方法实现了一个用于容错测试的库-确实是可行的!有没有办法用Sniffy通过编程阻止任意Java代码的传出流量?假设我有一个Java代理。我可以用Sniffy运行它并在代码中的某个点阻止流量?@AlexeyR。有可能-你可以您可以在代理启动时使用-javaagent参数连接sniffy代理,也可以在运行时使用Java attach API连接sniffy代理。之后,您可以使用sniffy REST API阻止流量