9
votes

Désactiver la connexion réseau

Comment pourrais-je désactiver temporairement une connexion réseau en Java?


1 commentaires

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


6 Réponses :


1
votes

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.


0 commentaires

2
votes

Cela fonctionnerait-il? Sous Windows: xxx

sur Linux (en supposant que l'interface réseau est appelée Eth0: xxx


1 commentaires

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 / ...



4
votes

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 () .

Votre usine personnalisée devra ensuite retourner des implémentations de socket personnalisées qui lancent simplement un ioexception à chaque tentative de connexion.

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 ServerSocket s.


1 commentaires

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



1
votes

(en supposant que cela soit sous Windows, Vista ou ultérieur)

Vous pouvez désactiver une interface via WMI < / a>, qui peut être accessible via un pont tel que Jacob .


0 commentaires

0
votes

Vous pouvez désactiver toutes les interfaces à l'aide de WMIC chemin win32_networkadapter où physicaladapter = true appel han disable


0 commentaires

1
votes

Sniffy vous permet de Bloquez les connexions réseau sortant dans vos applications Java - il lancera un ConnectException chaque fois que vous essayez d'établir une nouvelle connexion à l'hôte restreint.

Il suffit d'ajouter -javaagent: sniffy.jar = 5559 à vos arguments JVM et pointez votre navigateur sur localhost: 5559 - il ouvrira une page Web avec toutes les connexions découvertes aux systèmes et contrôles en aval pour désactiver certaines connexions.

 Console Sniffy Connections

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=

Cliquez sur un widget dans le coin inférieur droit, sélectionnez connexions réseau onglet, désactivation et connexion à localhost: 8967 (base de données) et recharger une page pour le voir action.

Disclaimer: Je suis l'auteur de Sniffy


2 commentaires

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