Warum Verbindung zu localhost verweigert wird?
Ich habe einen server, auf dem ein client-Rechner verbindet. Vor kurzem habe ich beschlossen, verschlüsseln Sie die Verbindung mit stunnel, so nun client-Programm verbindet sich nicht direkt zum server, sondern zu localhost:8045 (habe ich geprüft, und dieser port ist nicht belegt).
Java-code:
URL url = new URL("http://localhost:8045/malibu/GetProviders");
InputStream stream = url.openStream();
Und ich bekomme die folgende:
java.net.ConnectException: Connection refused: 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)
. . .
Wenn ich versuche, Sie zu fordern die gleiche Seite mit curl
ist alles in Ordnung.
Was kann die Ursache für ein solches Verhalten?
EDIT: ja, es ist eine socket - läuft netstat -avn | grep 8045
gibt:
tcp6 0 0 ::1:8045 :::* LISTEN
Haben Sie versucht, eine https:// in der URL()
Das ist nicht, wie stunnel funktioniert. (2) Der Fehler ist eindeutig eine TCP-Ebene Verbindung Verweigerung, nicht-negotiation-Fehler.
Versuchen Sie mit Ihrer IP in der URL.
Können Sie das bestätigen, dass es sogar eine socket bound to port 8045?
Gleiches Ergebnis 🙁
Das ist nicht, wie stunnel funktioniert. (2) Der Fehler ist eindeutig eine TCP-Ebene Verbindung Verweigerung, nicht-negotiation-Fehler.
Versuchen Sie mit Ihrer IP in der URL.
Können Sie das bestätigen, dass es sogar eine socket bound to port 8045?
Gleiches Ergebnis 🙁
InformationsquelleAutor Rogach | 2011-08-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den socket gebunden ist, um zu der IPv6-loopback-Adresse (::1). Ich erinnere mich an einige Probleme mit Java nicht unterstützt dual-stack IPv4/IPv6-Systemen korrekt; das ist wohl so ein Fall. Es ist die Verbindung zu 127.0.0.1 (nur IPv4).
Alles was Sie bisher probiert haben (curl, telnet...) wird versuchen, die IPv6-Adresse zuerst, und dann fallen zurück auf die IPv4-Adresse, wenn das fehlschlägt. Das ist, warum Sie arbeiten, während die Java-Anwendung nicht.
Versuchen Sie zwingen stunnel Bindung an 127.0.0.1. Sie könnten auch versuchen, mit Java eine Verbindung zu
http://[::1]:8045/malibu/GetProviders
, aber ich kann mich nicht erinnern, ob es unterstützt IPv6-Adressen in HTTP-URLs.wie haben Sie den code ändern, damit es funktioniert.. brauche Hilfe
InformationsquelleAutor cdhowie
Ich habe Apache auf Windows und auch connection refused, die von Java. Allerdings Debuggen der Verbindung und der Apache-log zeigt, dass es eigentlich nicht eine Verbindung problem. Apache gibt Fehler 301 dauerhaft verschoben. Stellt dann eine Umleitungs-url nicht existierenden port 8080. Also irgendwas stimmt mit der server-Konfiguration, die wohl die Direktive ServerName verwenden falsche port. Hinzufügen eines trailing slash auf die angeforderte url, die das problem behebt. Die meisten nützliche debugging-Ausgabe in meinem Fall wurde von wget.
Ist es möglich, dass die akzeptierte Antwort nicht erklären, das Phänomen. Der reporter selbst gab in einem Kommentar, dass schließlich er verwendet eine url mit slash am Ende.
InformationsquelleAutor Jarekczek