Comment pourrais-je désactiver temporairement une connexion réseau en Java? P>
6 Réponses :
Malheureusement, la désactivation d'une connexion réseau est spécifique au système d'exploitation et je ne suis au courant d'aucune API Java standard pour accéder à ces fonctionnalités du système d'exploitation. Vous devrez probablement faire du codage spécifique au système d'exploitation, par exemple. Via JNI ou exécuter des programmes externes, pour chaque système d'exploitation que vous avez l'intention de prendre en charge. Le programme Java devra également être invoqué avec les privilèges appropriés à être autorisés à désordre avec les interfaces réseau. P>
Cela fonctionnerait-il?
Sous Windows: sur Linux (en supposant que l'interface réseau est appelée Eth0: p>
J'utilise cette méthode sur une application où je viens de libérer la connexion pour toutes les connexions sans fil.et puis le renouvelez-le après la fin de mon application. J'ai utilisé cette page comme référence: compnetworking.about.com/od/workingwithipaddresses/ A / ...
Un moyen assez compliqué mais faisable de le faire consiste à créer une usine de mise en œuvre de la prise personnalisée. Vous pouvez l'enregistrer en appelant socket.setsocketImplactory () code> . p>
Votre usine personnalisée devra ensuite retourner des implémentations de socket personnalisées qui lancent simplement un Notez que cela n'arrête que les connexions sortantes, si vous souhaitez arrêter votre application acceptant également les connexions entrantes, vous devrez jouer un truc similaire sur ioexception code> à chaque tentative de connexion. P>
ServerSocket code> s. P>
J'ai mis en place une bibliothèque pour les tests de tolérance des pannes à l'aide de cette approche avec SocketImplactory - en effet, il est réalisable! Stackoverflow.com/a/43056981/504452
(en supposant que cela soit sous Windows, Vista ou ultérieur) P>
Vous pouvez désactiver une interface via WMI < / a>, qui peut être accessible via un pont tel que Jacob . P>
Vous pouvez désactiver toutes les interfaces à l'aide de WMIC chemin win32_networkadapter code> où physicaladapter = true code> appel han disable p>
Sniffy vous permet de Il suffit d'ajouter Si votre application est basée sur le Web, vous pouvez même le faire directement à partir de votre application ouverte dans le navigateur - voir une démo ici: http://demo.sniffy.io/owners?lastname= P>
Cliquez sur un widget dans le coin inférieur droit, sélectionnez Disclaimer: Je suis l'auteur de Sniffy em> p> ConnectException code> chaque fois que vous essayez d'établir une nouvelle connexion à l'hôte restreint. p>
-javaagent: sniffy.jar = 5559 code> à vos arguments JVM et pointez votre navigateur sur localhost: 5559 code> - il ouvrira une page Web avec toutes les connexions découvertes aux systèmes et contrôles en aval pour désactiver certaines connexions. P>
connexions réseau code> onglet, désactivation et connexion à localhost: 8967 code> (base de données) et recharger une page pour le voir action. p>
Existe-t-il un moyen de bloquer le trafic sortant pour le code Java arbitraire de manière programmatique avec Sniffy? Dis que j'ai un proxy Java. Puis-je courir avec Sniffy et bloquer le trafic à certains points de mon code?
@ALEXEYR. Il est possible - vous avez besoin de pour attacher l'agent Sniffy lors du démarrage de proxy en utilisant -JavaAgent Paramètre ou utilisez API Java Joindre API afin de le faire en heure d'exécution. Après cela, vous pouvez utiliser une API de repos Sniffy pour bloquer le trafic
Oui, je suis d'accord avec Mitch ... La façon la plus simple que vous allez trouver est de tirer le câble ou de désactiver l'adaptateur réseau