Ich versuche, ein Serverprogramm in C mit einem anderen Client zu schreiben. Diese Fehlermeldung wird angezeigt, wenn ich beispielsweise versuche, eine Verbindung über Port 2080 herzustellen.
connection refused
Was können die Gründe für diesen Fehler sein?
c
sockets
connection-refused
Zenet
quelle
quelle
ping
, downforeveryoneorjustme.com zeigte, dass es nicht nur ich bin und ich auch weiterhin über FTP darauf zugreifen konnte. Nach ein paar Minuten waren die Fehler behoben.connect()
hängt jedoch davon ab, ob eine bestimmte IP-Adresse und ein bestimmter Port einsatzbereit sind.Antworten:
Es kann viele Gründe geben, aber die häufigsten sind:
Der Port ist auf dem Zielcomputer nicht geöffnet.
Der Port ist auf dem Zielcomputer geöffnet, aber der Rückstand an ausstehenden Verbindungen ist voll.
Eine Firewall zwischen Client und Server blockiert den Zugriff (überprüfen Sie auch die lokalen Firewalls).
Nachdem Sie nach Firewalls gesucht haben und der Port geöffnet ist, stellen Sie mit Telnet eine Verbindung zur IP / zum Port her, um die Konnektivität zu testen. Dadurch werden potenzielle Probleme aus Ihrer Anwendung entfernt.
quelle
Der Fehler bedeutet, dass das Betriebssystem des Listening-Sockets die eingehende Verbindungsanforderung erkannt, diese jedoch absichtlich abgelehnt hat.
Angenommen, eine Zwischenfirewall stört nicht, gibt es nur zwei (mir bekannte) Gründe für das Betriebssystem, eine eingehende Verbindungsanforderung abzulehnen. Ein Grund wurde bereits mehrfach erwähnt: Der angeschlossene Listening-Port ist nicht geöffnet.
Es gibt einen weiteren Grund, der noch nicht erwähnt wurde: Der Überwachungsport ist tatsächlich geöffnet und wird aktiv verwendet, aber sein Rückstand an eingehenden Verbindungsanforderungen in der Warteschlange hat sein Maximum erreicht, sodass kein Platz für die eingehende Verbindungsanforderung verfügbar ist Moment. Der Servercode hat accept () noch nicht oft genug aufgerufen, um die verfügbaren Slots für neue Warteschlangenelemente zu löschen.
Warten Sie einen Moment oder versuchen Sie es erneut. Leider gibt es keine Möglichkeit, zwischen "Der Port ist überhaupt nicht geöffnet" und "Der Port ist offen, aber gerade zu beschäftigt" zu unterscheiden. Beide verwenden denselben generischen Fehlercode.
quelle
Wenn Sie versuchen, eine TCP-Verbindung zu einem anderen Host herzustellen, und der Fehler "Verbindung abgelehnt" angezeigt wird, bedeutet dies Folgendes
RST ist ein Bit im TCP-Paket, das angibt, dass die Verbindung zurückgesetzt werden soll. Normalerweise bedeutet dies, dass der andere Host Ihren Verbindungsversuch erhalten hat und Ihre TCP-Verbindung aktiv ablehnt. Manchmal blockiert jedoch eine dazwischenliegende Firewall Ihr TCP-SYN-Paket und sendet eine TCP-RST an Sie zurück.
Siehe https://tools.ietf.org/html/rfc793 Seite 69:
quelle
Verbindung abgelehnt bedeutet, dass der Port, zu dem Sie eine Verbindung herstellen möchten, nicht geöffnet ist.
Entweder stellen Sie eine Verbindung zur falschen IP-Adresse oder zum falschen Port her, oder der Server überwacht den falschen Port oder wird nicht ausgeführt.
Ein häufiger Fehler besteht darin, die Portnummer beim Binden oder Verbinden in der Reihenfolge der Netzwerkbytes nicht anzugeben ...
quelle
Überprüfen Sie auf der Serverseite, ob der Port 2080 überwacht wird. Versuchen Sie zunächst, ihn auf dem Server zu bestätigen, indem Sie Telnet an diesen Port senden:
Telnet Localhost 2080
Wenn es zuhört, kann es reagieren.
quelle
1.Überprüfen Sie Ihren Serverstatus.
2.Überprüfen Sie den Portstatus.
Zum Beispiel 3306
netstat -nupl|grep 3306
.3.Überprüfen Sie Ihre Firewalls. Fügen Sie zum Beispiel 3306 hinzu
quelle
Obwohl dies in Ihrer Situation nicht der Fall zu sein scheint, kann ein Fehler bei der Verbindungsverweigerung manchmal auch darauf hinweisen, dass in Ihrem Netzwerk ein IP-Adresskonflikt vorliegt. Sie können nach möglichen IP-Konflikten suchen, indem Sie Folgendes ausführen:
und
Diese AskUbuntu-Frage enthält auch einige weitere Informationen.
quelle
Vom Standpunkt einer Checkpoint-Firewall aus wird eine Meldung von der Firewall angezeigt, wenn Sie tatsächlich als Aktion ablehnen auswählen, wodurch einem potenziellen Angreifer das Vorhandensein einer Firewall vor dem Server angezeigt wird. Die Firewall trennt stillschweigend alle Verbindungen, die nicht der Richtlinie entsprechen. Die verweigerte Verbindung kommt fast immer vom Server
quelle
Ich habe das gleiche Problem mit meinem Arbeitscomputer. Das Problem ist, dass wenn Sie localhost eingeben, es an die Adresse des Proxys und nicht an die lokale Adresse geht, Sie diese umgehen sollten. Befolgen Sie diese Schritte
Chrome => Einstellungen => Proxy-Einstellungen ändern => LAN-Einstellungen => Proxy-Server auf lokale Adressen umgehen.
quelle
Versuchen Sie
sudo ufw allow <port_number>
in Ubuntu, den Firewall-Zugriff sowohl auf Ihren Server als auch auf Ihre Datenbank zuzulassen.quelle
Versuchen Sie, den Portparameter "-p" zu übergeben:
quelle
In meinem Fall passiert es, wenn die Site in meinem Land blockiert ist und ich kein VPN verwende. Zum Beispiel, wenn ich versuche, von Indonesien aus auf vimeo.com zuzugreifen, das blockiert ist.
quelle
Ich hatte die gleiche Nachricht mit einer ganz anderen Ursache: Die
wsock32.dll
wurde nicht gefunden. Der::socket(PF_INET, SOCK_STREAM, 0);
Anruf gab immer wieder zurück,INVALID_SOCKET
aber der Grund war, dass die Winsock-DLL nicht geladen wurde.Am Ende habe ich den Prozessmonitor von Sysinternals gestartet und festgestellt, dass er "überall" nach der DLL gesucht hat, diese aber nicht gefunden hat.
Stille Fehler sind großartig!
quelle