2013-05-03 10 views
-2

J'ai créé une application de conversation serveur/client simple, à des fins d'étude. Maintenant, il fonctionne parfaitement localement pendant que j'initialiser mon serveur en utilisant le constructeur par défaut ServerSocket server = new ServerSocket(18524); et du côté client que je utilise client = new Socket(servername, 18524) tout servername = "localhost";Lier ServerSocket à l'adresse IP externe

J'ai aussi pensé à l'utiliser sur mon réseau local, à savoir la connexion au serveur hébergé sur 192.168.xx

problème est lorsque je tente de lier mon serveur à mon adresse IP externe, i.e. 87.92.x.x

Toute idée pourquoi cela est hapening?

Edit: J'ai fait ce qui suit, peut-être qu'il me manque quelque chose.

server.bind(new InetSocketAddress("87.x.x.x", 18524)); 

J'ai aussi transmis le port 18524 ​​(TCP et UDP) sur mon routeur et fait que le port est ouvert sur mon pare-feu Windows.

encore je reçois: Exception in thread "main" java.net.BindException: Cannot assign requested address: JVM_Bind

+2

configuration de pare-feu vérifiée? –

+0

Pas encore honnêtement, je vais vérifier. –

+0

Comment sont configurées les connexions Internet de votre serveur? Y a-t-il un pare-feu/routeur sur le réseau du serveur? –

Répondre

0

Vous ne pouvez pas lier une socket à une adresse IP externe. Vous ne pouvez lier qu'une adresse IP locale à l'hôte actuel. Le plus souvent, vous spécifiez simplement 0.0.0.0. Si le port externe est transféré correctement, cela suffit.

+0

Donc, si je le lie à 0.0.0.0, les clients peuvent utiliser mon adresse IP externe pour se connecter au serveur hébergé? –

Questions connexes