Impossible de créer un socket: java.net.ConnectException: Connexion refusée: connexion
-
26-10-2019 - |
Question
Je vais créer une socket et obtenir un InputStream
. Voici comment je l'essayer.
try {
final String serverIP = "111.111.111.111";
final int serverPort = Integer.parseInt(server_port);
final InetAddress serverAd=InetAddress.getByName(serverIP);
final InetAddress localAd =InetAddress.getByName(local_ip);
final int localPort = 4040;
Socket socket = new Socket(serverAd, serverPort, localAd, localPort);
}
Mais il y a une exception levée,
java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:529)
at java.net.Socket.connect(Socket.java:478)
at java.net.Socket.<init>(Socket.java:375)
at java.net.Socket.<init>(Socket.java:276)
at shootist.Porter.run(Porter.java:41)
Ici, le serveur me envoie des données et udp côté serveur est correct et confirmé. J'ai envoyé inviter et 200 ainsi obtenu. S'il y a un problème dans mon IP et le port, je pense, toutes les réponses ne peuvent pas livrés à mes ports IP et données. Mais il ne peut pas arriver que le serveur me envoie des réponses à mon adresse IP et le numéro de port donné. Comment puis-je résoudre ce problème? Là où je me trompe et quoi?
La solution
A « connexion refusée » un moyen d'erreur de la pile de prise de l'appareil de serveur a reçu votre demande de connexion et intentionnellement refusé de l'accepter. Cela se produit pour l'une des deux raisons possibles:
1) il n'y a pas de prise d'écoute en cours d'exécution sur le port que vous essayez de vous connecter.
2) il y a une prise d'écoute, mais son carnet de commandes des connexions en attente est pleine, donc il n'y a pas de place à la file d'attente de votre demande à ce moment.
Pour la différence entre les deux, essayez de vous reconnecter plusieurs fois avec un retard entre chaque tentative. Si vous obtenez la même erreur constante, alors n ° 1 est probablement le coupable. Assurez-vous que le numéro de port est correct. Si # 2 est le coupable, votre Reconnect a une chance de réussir par la suite.
Autres conseils
Connexion refusée signifie que votre sont essayez de vous connecter à un serveur qui n'écoute sur ce port, ou est trop backlogged pour accepter la connexion.
Une façon simple de tester est d'essayer
telnet 111.111.111.111 4040