java.net.ConnectException: Connection refused
Ich versuche, die Implementierung eines TCP-Verbindung, funktioniert alles von der server-Seite aber wenn ich das client-Programm (vom client-computer) bekomme ich die folgende Fehlermeldung:
java.net.ConnectException: Connection refused
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:432)
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:189)
at TCPClient.main(TCPClient.java:13)
Ich habe versucht, ändern der Steckdose, falls es im Einsatz war, aber ohne Erfolg, weiß jemand, was diesen Fehler verursacht & wie man es beheben.
Server-Code:
//TCPServer.java
import java.io.*;
import java.net.*;
class TCPServer {
public static void main(String argv[]) throws Exception {
String fromclient;
String toclient;
ServerSocket Server = new ServerSocket(5000);
System.out.println("TCPServer Waiting for client on port 5000");
while (true) {
Socket connected = Server.accept();
System.out.println(" THE CLIENT" + " " + connected.getInetAddress()
+ ":" + connected.getPort() + " IS CONNECTED ");
BufferedReader inFromUser = new BufferedReader(
new InputStreamReader(System.in));
BufferedReader inFromClient = new BufferedReader(
new InputStreamReader(connected.getInputStream()));
PrintWriter outToClient = new PrintWriter(
connected.getOutputStream(), true);
while (true) {
System.out.println("SEND(Type Q or q to Quit):");
toclient = inFromUser.readLine();
if (toclient.equals("q") || toclient.equals("Q")) {
outToClient.println(toclient);
connected.close();
break;
} else {
outToClient.println(toclient);
}
fromclient = inFromClient.readLine();
if (fromclient.equals("q") || fromclient.equals("Q")) {
connected.close();
break;
} else {
System.out.println("RECIEVED:" + fromclient);
}
}
}
}
}
Den Client-Code:
//TCPClient.java
import java.io.*;
import java.net.*;
class TCPClient {
public static void main(String argv[]) throws Exception {
String FromServer;
String ToServer;
Socket clientSocket = new Socket("localhost", 5000);
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(
System.in));
PrintWriter outToServer = new PrintWriter(
clientSocket.getOutputStream(), true);
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(
clientSocket.getInputStream()));
while (true) {
FromServer = inFromServer.readLine();
if (FromServer.equals("q") || FromServer.equals("Q")) {
clientSocket.close();
break;
} else {
System.out.println("RECIEVED:" + FromServer);
System.out.println("SEND(Type Q or q to Quit):");
ToServer = inFromUser.readLine();
if (ToServer.equals("Q") || ToServer.equals("q")) {
outToServer.println(ToServer);
clientSocket.close();
break;
} else {
outToServer.println(ToServer);
}
}
}
}
}
Kannst du bitte posten Sie den client-code? Wenn es einen remote-client-stellen Sie sicher, dass Sie don ' T haben keine Probleme mit der firewall!
Ich schaltete firewalls auf client & server & immer noch gleiche problem
Welches interface der server auf Anfragen wartet. Wenn Sie nur Zuhören auf localhost, können Sie eine Remote-Verbindung.
Ich habe versucht, eine Remote-Verbindung während der Verwendung von "localhost" face palm. Dies ist mein Erster Versuch mit TCP - >.< Wie kann ich es machen das arbeiten aus der Ferne?
Denken Sie daran, dass Sie möglicherweise einige "bare-metal" hardware-firewalls in zwischen so gut... funktioniert es, wenn client und server auf der gleichen box?
Ich schaltete firewalls auf client & server & immer noch gleiche problem
Welches interface der server auf Anfragen wartet. Wenn Sie nur Zuhören auf localhost, können Sie eine Remote-Verbindung.
Ich habe versucht, eine Remote-Verbindung während der Verwendung von "localhost" face palm. Dies ist mein Erster Versuch mit TCP - >.< Wie kann ich es machen das arbeiten aus der Ferne?
Denken Sie daran, dass Sie möglicherweise einige "bare-metal" hardware-firewalls in zwischen so gut... funktioniert es, wenn client und server auf der gleichen box?
InformationsquelleAutor Samantha Catania | 2011-07-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese Ausnahme bedeutet, dass dort kein Dienst lauscht auf der IP/port Sie eine Verbindung herstellen möchten:
You have not started your server
, aber es war in der Tat das problem für mich!Nur um den Punkt klar - "Java core ist auch gut so". Problem ist nur, wir übersehen Probleme.. (server-Status, IP-Adresse, port, internet-Verbindung - auf-dem-gleichen-router ist ein muss für lokale IP ' s und mehr)
Collin, was genau meinst du mit 'der server ist nicht warten, um verbindungen zu akzeptieren'? Menschen Nachplappern um, als ob es etwas bedeutet.
Ich schrieb vor einer Weile, aber ich denke, ich meinte es als eine andere Art zu sagen, die Sie nicht begonnen haben Ihre server.
in meinem Fall hatte ich vier Gennymotion Simulatoren laufen und ich habe versucht, laden Sie die app auf dem Galaxy tab und ich wurde immer diese Fehlermeldung. nach der Lektüre eine Menge von den buddy-WEB, habe ich dann geschlossen, alle Simulatoren und eclipse getötet, die ADP in den task-manager und dann neu gestartet, die Eclipse und alles begann zu arbeiten richtig. Ich denke, wenn Sie mehrere Simulatoren laufen und dann versuchen, Gerät anschließen, ADB geht Nüsse in meiner Erfahrung. das sind meine zwei Cent... 🙂
InformationsquelleAutor Collin Price
Ich würde überprüfen:
Die einfachste Ausgangspunkt ist wahrscheinlich, um zu versuchen, die Verbindung manuell vom client-Computer mit telnet oder Putty. Wenn das gelingt, dann ist das problem in Ihrem client-code. Wenn es nicht funktioniert, Sie müssen herausfinden warum es noch nicht. Wireshark kann Ihnen helfen, an dieser front.
Es ist unmöglich zu sagen, wirklich - Sie müssten arbeiten Sie genau heraus, wie weit der Daten zu bekommen. Schauen Sie auf Ihre firewall-logs etc.
wie unsere config-firewall, wenn wir diese Fehler?
Ich bin nicht qualifiziert zu beantworten, aber ich vermute, jeder, der ist qualifizierte müssten viel mehr Informationen in der Lage sein, um Ihnen zu helfen. (Für eine Sache, wir wissen nicht, welche firewall du hast...)
InformationsquelleAutor Jon Skeet
Ich hatte das gleiche problem, aber läuft der Server vor dem ausführen des Client behoben.
Ja, es war offensichtlich, aber es war nicht zu offensichtlich für einige neue Programmierer (wie mich vor 3 Jahren) also ich wollte nur zu teilen mit denen, die Gesellen, die waren ratlos wie ich.
InformationsquelleAutor Dao Lam
Verbinden Sie Ihre client-socket zum remote-ServerSocket. Statt
Socket clientSocket = new Socket("localhost", 5000);
tun
Socket clientSocket = new Socket(serverName, 5000);
Muss der client eine Verbindung zu serverName sollte mit dem Namen oder der IP von der box auf die Ihr
ServerSocket
instanziiert wurde (die Namen erreichbar sein muss von der client-Maschine). BTW: Es ist nicht der name ist wichtig, es geht um IP Adressen...Sie sagte, dass es funktioniert, wenn client und server auf derselben Maschine laufen (Sie finden die Antwort in einem anderen Kommentar).
"Die oben genannten Zeile bindet den socket auf localhost" Nein tut es nicht, es bindet ihn an INADDR_ANY. Das ermöglicht es, verbindungen über jede Netzwerkkarte. Was der OP tut, ist schon korrekt. Antwort ist komplett falsch. Downvoting.
Du hast Recht mit der
ServerSocket
modifizierte ich die Antwort. Dennoch, dieclientSocket
noch versucht, eine Verbindung zulocalhost
.Sie müssen entfernen den Satz über die bind-Adresse.
InformationsquelleAutor home
Ich hatte das gleiche problem mit dem Mqtt-broker genannt vernemq.aber es gelöst, indem Sie den folgenden.
$ sudo vmq-admin listener show
zum anzeigen der Liste a dürfen IP-Adressen und ports für vernemq
$ sudo vmq-admin listener start port=1885 -a 0.0.0.0 --mountpoint /appname --nr_of_acceptors=10 --max_connections=20000
hinzufügen, ip-und Ihren neuen Anschluss. jetzt u sollte in der Lage sein, um verbinden, ohne jedes problem.
Hoffe, es löst dein problem.
InformationsquelleAutor MrOnyancha
Hoffe, meine Erfahrung kann nützlich sein, um jemanden. Ich Stand vor dem problem, mit der gleichen Ausnahme-stack-trace und ich konnte nicht verstehen, was das Problem war. Der Datenbank-server, den ich versuche zu verbinden, ausgeführt wurde, und der port war offen und wurde akzeptiert verbindungen.
Wurde das Problem mit internet-Verbindung. Die internet-Verbindung, dass ich war nicht erlaubt, eine Verbindung zu dem entsprechenden server. Wenn ich änderte die Verbindungsdetails, das Problem habe gelöst.
InformationsquelleAutor phoenix
Einen Punkt, den ich hinzufügen möchte, die oben genannten Antworten ist meine Erfahrung-
"Ich gehostet auf meinem server auf localhost und versucht hatte, Sie zu verbinden, um es durch ein android-emulator durch die Angabe der richtigen URL wie
http://localhost/my_api/login.php
. Und ich war immer connection refused Fehler"Punkt -, Wenn ich ging einfach im browser auf dem PC, und verwenden Sie die gleiche URL (
http://localhost/my_api/login.php
) ich war immer die richtige Antwortalso das Problem in meinem Fall war der Begriff
localhost
die ich ersetzt mit dem IP - für meinen server (als server gehostet wird, auf Ihrem Computer), die es erreichbar von meinen emulator auf dem gleichen PC.IP für den lokalen Rechner, die Sie verwenden können
ipconfig
Befehl auf der cmderhalten Sie die IPv4-so etwas wie 192.68.xx.yy
Voila ..das dein Rechner die IP-Adresse, wo Sie Ihren server gehostet.
verwenden Sie dann statt "localhost"
http://192.168.72.66/my_api/login.php
Hinweis - Sie werden nicht in der Lage zu erreichen diese private IP-Adresse von einem beliebigen Knoten außerhalb dieses Computers. (Im Falle, dass Sie benötigen ,können Sie Ngnix)
InformationsquelleAutor eRaisedToX
In meinem Fall, habe ich die sockel der name des Servers (in meinem Fall "raspberrypi"), und anstelle einer IPv4-Adresse aus, oder geben Sie, IPv6 gebrochen war (der name aufgelöst, auf eine IPv6 -)
InformationsquelleAutor Zhyano
In meinem Fall musste ich setzen Sie ein Häkchen in der Nähe von
Expose daemon on tcp://localhost:2375 without TLS
imdocker
- Einstellung (auf der rechten Seite der task-Leiste mit der rechten Maustaste aufdocker
wählen Siesetting
)InformationsquelleAutor user1419243
bekam ich diese Fehlermeldung, weil ich geschlossen
ServerSocket
innerhalb einer for-Schleife, die versuchen, zu akzeptieren Anzahl der clients, die sich innerhalb es (ich habe es nicht fertig akzeptieren alle clints)also vorsichtig sein, wo Sie zum schließen des Socket
InformationsquelleAutor Basheer AL-MOMANI
Port-Nummer immer anders an beiden enden
InformationsquelleAutor Harshil Kulkarni
Hatte ich dasselbe problem und das problem war, dass ich nicht schließenden socket-Objekt.Nach der Verwendung von socket.close(); problem gelöst.
Dieser code funktioniert für mich.
ClientDemo.java
und
ServerDemo.java
InformationsquelleAutor Santosh Karna
Könnte es sein, dass es einer vorherigen Instanz der client noch läuft und lauscht auf port 5000.
Eine frühere Instanz hätte zu einem
BindException
auf dem server, nicht einConnectException
an den client.InformationsquelleAutor Michael Munsey
Ich hatte das gleiche Problem, und es stellte sich heraus, dass aufgrund der Genehmigung des
catalina.out
- Datei nicht korrekt. Es war nicht beschreibbar, indem Sie den tomcat-Benutzer. Sobald ich Feste die Berechtigungen, das Problem habe gelöst. Ich bekam zu wissen, dass es ein Problem mit Berechtigungen aus den Protokollen in dertomcat8-initd.log
Datei:/usr/sbin/tomcat8: line 40: /usr/share/tomcat8/logs/catalina.out: Permission denied
InformationsquelleAutor kbsbng