Ein ziemlich komplizierter, aber praktikabler Weg, dies zu tun, besteht darin, eine benutzerdefinierte Socket-Implementierungsfactory zu erstellen. Sie können es registrieren, indem Sie aufrufen Socket.setSocketImplFactory()
.
Ihre benutzerdefinierte Factory muss dann benutzerdefinierte Socket-Implementierungen zurückgeben, die bei jedem Verbindungsversuch einfach ein IOException
auslösen.
Beachten Sie, dass dies nur ausgehende Verbindungen stoppt. Wenn Sie Ihre Anwendung stoppen möchten, akzeptieren Sie auch einen ähnlichen Trick in ServerSocket
s.
Leider ist das Deaktivieren einer Netzwerkverbindung betriebssystemspezifisch, und mir sind keine Standard-Java-APIs für den Zugriff auf diese Betriebssystemfunktionen bekannt. Sie müssten wahrscheinlich einige Betriebssystem-spezifische Codierung, z. über JNI oder Ausführen von externen Programmen für jedes Betriebssystem, das Sie unterstützen möchten. Das Java-Programm müsste auch mit den richtigen Rechten aufgerufen werden, um sich mit den Netzwerkschnittstellen herumschlagen zu können.
Sniffy ermöglicht Ihnen ausgehende Netzwerke zu blockieren Verbindungen in Ihren Java-Anwendungen - es wird ein ConnectException
geworfen, wenn Sie versuchen, eine neue Verbindung zu einem eingeschränkten Host herzustellen.
Fügen Sie einfach -javaagent:sniffy.jar=5559
zu Ihren JVM-Argumenten hinzu und verweisen Sie Ihren Browser auf localhost:5559
- es öffnet eine Webseite mit allen erkannten Verbindungen zu nachgelagerten Systemen und Steuerelementen, um bestimmte Verbindungen zu deaktivieren.
Wenn Ihre Anwendung webbasiert ist, können Sie sie sogar direkt über Ihre im Browser geöffnete Anwendung ausführen. Eine Demo finden Sie hier: Ссылка
Klicke auf ein Widget in der unteren rechten Ecke, wähle Network Connections
tab, deaktiviere und verbinde dich mit localhost:8967
(Datenbank) und lade eine Seite neu, um sie in Aktion zu sehen.
Disclaimer: Ich bin der Autor von Sniffy
Tags und Links java