2009-04-22 6 views
0

Je souhaite exécuter une application client/serveur construite en Java à l'aide d'une connexion socket. Si j'exécute à la fois le serveur et le programme client sur la même machine, le client et le serveur se communiquent comme prévu. Mais d'autre part, si exécuter le programme client sur un autre système, je reçois une exceptionProgrammation de socket en Java

java.net.ConnectException: Connection timed out: connect 
     at java.net.PlainSocketImpl.socketConnect(Native Method) 
     at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333) 
     at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195) 
     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182) 
     at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) 
     at java.net.Socket.connect(Socket.java:519) 
     at java.net.Socket.connect(Socket.java:469) 
     at java.net.Socket.<init>(Socket.java:366) 
     at java.net.Socket.<init>(Socket.java:180) 

Quelqu'un pourrait me aider à résoudre ce problème?

+1

pouvons-nous voir le code que vous utilisez pour créer le ServerSocket? – Cogsy

Répondre

1

Comment vous avez créé l'objet Socket dans le client? Pouvons-nous voir le code du serveur et du client tous les deux? Peut-être utilisez-vous localhost lors de la création de l'objet Socket client. Au lieu de localhost, utilisez l'adresse IP ou le nom d'hôte de la machine qui exécute le serveur. Vérifiez également si les deux machines sont sur le même réseau et peuvent se voir.

+0

J'ai eu réponse Monsieur, Merci pour la réponse –

4

En plus de ce que dit Bhushan, vérifiez qu'il n'est pas bloqué par un pare-feu. En particulier, le pare-feu intégré de Windows XP me rattrape souvent.

Vous pouvez également tester votre connexion TCP (je suppose que vous utilisez TCP) par telnet'n du client au serveur, à savoir

client.host] telnet port ip.of.server. of.application

et de voir quelle réponse vous obtenez. Si vous obtenez autre chose qu'un délai d'expiration, vous utilisez les valeurs incorrectes adresse/port dans votre objet Socket.

+0

J'ai reçu une réponse merci pour votre réponse –

0

Il semble que vous ayez un pare-feu (Windows et Linux sont activés par défaut) sur votre serveur et vous devez autoriser d'autres machines à se connecter sur le port que vous utilisez.

0

le principal problème que je pense est que vous devez ouvrir le port. Le serveur et les clients communiquent en utilisant le même port. Lorsque vous utilisez la même machine dans ce cas, tous les ports sont ouverts pour vous-même. mais pour se connecter avec des systèmes séparés, vous devez ouvrir le port. En fait, c'est le travail de l'administrateur pour ouvrir le port.

Merci Sunil Kumar Sahoo

Questions connexes