2010-07-30 6 views
10

J'ai écrit une application Java simple qui interagit avec plusieurs instances de lui-même en utilisant des sockets. La première instance prend automatiquement le rôle de serveur, écoutant sur un port spécifique, et toutes les instances suivantes s'y connectent. Le problème auquel je suis confronté est que le Pare-feu Windows apparaît me demandant si je veux débloquer le programme de "accepter les connexions réseau entrantes". La chose est: ce n'est pas grave si vous laissez l'application bloquée, parce que les instances de l'application sont toujours sur la même machine, donc cela fonctionnera toujours.Éviter Windows popup pare-feu avec Sockets sur localhost

Ma question est: puis-je informer Windows que je ne veux même pas que les connexions réseau entrantes soient acceptées?

+0

Clarifier. Vous voulez que le pare-feu Windows bloque automatiquement toutes les demandes réseau entrantes? – Caladain

+1

Je veux que le socket écoute sur le localhost seulement, * pas * sur le trafic réseau entrant. En d'autres termes, je ne veux pas que le pare-feu Windows affiche des fenêtres contextuelles en premier lieu. –

Répondre

12

Utilisez la classe three parameter constructor de la classe ServerSocket pour spécifier l'adresse IP que le serveur doit écouter. De cette façon, vous pouvez restreindre le serveur à l'écoute uniquement sur 127.0.0.1, contrairement à la valeur par défaut de 0.0.0.0. Voir this related SO question, pour plus de détails.

EDIT: Il est préférable d'utiliser InetAddress.getByName (null) pour obtenir l'adresse locale.

+2

Super, ça marche! J'avais essayé ce constructeur avec le dernier paramètre étant 'InetAddress.getLocalHost()', mais c'est évidemment l'adresse réseau du localhost. Le remplacer par 'InetAddress.getByName (null)' évite le pop-up du pare-feu. –