Nicht zum Erstellen eines Socket :java.net.ConnectException: Connection refused: connect
Werde ich einen socket zu erstellen und bekommen einen InputStream
. Hier ist, wie ich es versuche.
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);
}
Aber es gibt eine Ausnahme geworfen,
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)
Hier sendet der server mir rtp-Daten und server-Seite ist ok und bestätigt. Ich schickte einladen und bekam 200 als gut. Wenn es ein problem in meiner IP und dem port, ich denke, alle Antworten, die nicht geliefert, meine IP gegeben und die Ports. Aber es kann nicht passieren, da der server sendet mir die Antworten auf meine IP und port-Nummer.
Wie kann ich dieses Problem lösen? Wo bin ich falsch, und was?
Hinzufügen von firewall-Ausnahme von der port-Nummer des Servers und der client-Maschine. Noch besser, werfen Sie Ihre firewall von Ihrem PC.
Danke. Lassen Sie mich wissen, wie Sie eine firewall Ausnahme, um die Portnummer auf der client-Maschine.
Danke. Lassen Sie mich wissen, wie Sie eine firewall Ausnahme, um die Portnummer auf der client-Maschine.
InformationsquelleAutor Débora | 2012-01-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einer "Verbindung verweigert" - Fehler bedeutet, dass die Buchse stack auf der server-Maschine empfangen Ihre Verbindung Anfrage und absichtlich weigerte sich zu akzeptieren. Das geschieht für einen von zwei möglichen Gründen:
1) es gibt keine socket läuft auf dem port Sie eine Verbindung herstellen möchten.
2) gibt es einen listening-socket, aber der Rückstand von ausstehenden verbindungen voll ist, so gibt es keinen Raum zu Warteschlange Ihre Anfrage in diesem moment.
Zwischen den beiden zu unterscheiden, versuchen Sie es ein paar mal mit einer Verzögerung zwischen den einzelnen versuchen. Wenn Sie den gleichen Fehler konsequent, dann #1 ist wahrscheinlich der Schuldige. Stellen Sie sicher, dass die port-Nummer korrekt ist. Wenn #2 ist der Täter, Ihre Verbindung wiederherstellen hat eine chance auf Erfolg irgendwann.
Danke Remy.Ich veränderte port-Nummern und ausprobiert. aber der gleiche Fehler :(. Würden Sie lassen Sie mich wissen, wie Sie eine erfolgreiche socket.(Ich m lettle etwas neues.)
Würden Sie mehr erklären ", aber der Rückstand von ausstehenden verbindungen voll ist, so gibt es keinen Raum zu Warteschlange.... ". Eine Möglichkeit, wenn ich schickte den LADEN und dann auf server-Antwort mit 200 und der server startet, sendet mir die Daten.Ich muss warten, bis der server die Antwort sendet und das entsprechende server-port(da-server-port ist definiert in der Antwort.INVITE ist an einen anderen port und socket erstellt werden, die auf einem anderen port, die der server entscheidet.) Wie Sie bereits erwähnt, habe ich versucht, wieder mit der Steckdose. aber es schlug fehl, da der gleiche Fehler aufgetreten ist.
Wenn ein client versucht, eine Verbindung zu einem server, der die Anfrage wird in die server-Warteschlange, bis es fordert
accept()
zu dequeue die Anfrage. Die Warteschlange hat eine endliche Größe, die angegeben wird, wenn der socket startet hören. Schauen Sie in die Dokumentation für diebacklog
parameter des Konstruktors für diejava.net.ServerSocket
Klasse.Wenn Sie keine Verbindung zu der IP/Port, den der server zurück an Ihren LADEN, dann stellen Sie sicher, dass die IP-Zugriff von Ihrem client-Computer, und es ist nicht eine firewall/router dazwischen, blockiert möglicherweise die Verbindung.
InformationsquelleAutor Remy Lebeau
Connection refused bedeutet, versuchen eine Verbindung zu einem server ist nicht in Wartestellung auf diesen port, oder zu überlastet, um die Verbindung anzunehmen.
Eine einfache Möglichkeit, dies zu testen ist, zu versuchen,
Guter Punkt, auf den Auftragsbestand. Die server werden in einem ziemlich schlechten Weg, denn es werden wieder protokolliert.
Nicht unbedingt. Der Rückstand vielleicht ein wenig zu klein und der server ist
accept()
- rate könnte codiert sein, dass Sie laufen ein wenig zu langsam. Man kann nie wirklich wissen.Ein gemeinsames Muster ist ein Akzeptor-thread, die nichts tut, sondern akzeptieren und erstellen von Handlern. Allerdings, einen server geladen vielleicht absichtlich verlangsamen, zu akzeptieren.
InformationsquelleAutor Peter Lawrey