Quelles peuvent être les raisons de connexion refusée erreurs?
Je suis en train d'écrire un programme serveur en C,
en utilisant un autre client, je reçois ce message d'erreur lorsque j'essaie de me connecter via le port 2080 par exemple.
connection refused
Quelles peuvent être les raisons de cette erreur?
- Je viens de recevoir cette erreur, en raison d'une erreur du serveur sur lequel j'héberge mon site web. Le serveur pourrait encore être
ping
ed, downforeveryoneorjustme.com ont montré qu'il n'est pas juste moi et je pourrais toujours y accéder via FTP. Après quelques minutes, les erreurs a été résolu. - le ping n'est pas de vous dire si un port est accessible ad écoute, uniquement si l'adresse IP est accessible. Mais
connect()
dépend d'un IP et le port étant prêt à être utilisé. - Serveur Faute a un canoniques question à propos de Connexion Refusée.
- Voici une brève explication de la Connexion Refusée.
- J'ai eu une connexion refusée sur Ubuntu parce que j'essayais de recevoir de connexion sur 'localhost', mais 'localhost' n'a pas été configuré correctement sur ma machine. Un changement de 'localhost' to " (Python) a résolu le problème.
Vous devez vous connecter pour publier un commentaire.
Il pourrait y avoir de nombreuses raisons, mais les plus courantes sont les suivantes:
Le port n'est pas ouvert sur la machine de destination.
Le port est ouvert sur la machine de destination, mais son carnet de commandes de connexions en attente est pleine.
Un pare-feu entre le client et le serveur est le blocage de l'accès (vérifier les pare-feu).
Après vérification de pare-feu et que le port est ouvert, utilisez telnet pour vous connecter à l'adresse ip/port pour tester la connectivité. Cela supprime tous les problèmes possibles à partir de votre application.
L'erreur signifie que le système d'exploitation de la socket d'écoute reconnu la connexion entrante demande, mais a choisi intentionnellement de le rejeter.
Dans l'hypothèse d'un intermédiaire pare-feu est de ne pas obtenir de la manière, il y a seulement deux raisons (que je connais) pour le système d'exploitation de rejeter une demande de connexion entrante. L'une des raisons qui a déjà été mentionné à plusieurs reprises - le port d'écoute connecté n'est pas ouvert.
Il y a une autre raison qui n'a pas encore été mentionnés - le port d'écoute est en fait ouvert et activement utilisé, mais son carnet de commandes de la file d'attente les demandes de connexion entrantes a atteint son maximum, donc il n'y a aucune chambre disponible pour la connexion entrante demande à être mis en file d'attente à ce moment-là. Le code du serveur n'a pas appelé accept() de suffisamment de temps encore pour terminer l'effacement des places disponibles pour les nouveaux éléments de file d'attente.
Attendre un moment et essayez de nouveau la connexion. Malheureusement, il n'y a aucun moyen de distinguer entre "le port n'est pas ouvert à tous" et "le port est ouvert, mais trop occupé en ce moment". Ils utilisent tous les deux le même code d'erreur générique.
Si vous essayez d'ouvrir une connexion TCP vers un autre hôte et voir le message d'erreur "Connexion refusée", cela signifie que
Premier est un peu sur le paquet TCP qui indique que la connexion doit être réinitialisé. Habituellement, cela signifie que l'autre d'accueil a reçu votre tentative de connexion, et est activement refus de votre connexion TCP, mais parfois l'intermédiaire d'un pare-feu peut bloquer votre paquet TCP SYN et envoyer un paquet TCP RST de nouveau à vous.
Voir https://tools.ietf.org/html/rfc793 page 69:
Connexion refusée signifie que le port que vous essayez de vous connecter n'est pas réellement ouvert.
Donc, soit vous vous connectez à l'adresse IP incorrecte, ou à un mauvais port, ou que le serveur écoute sur le port incorrect ou n'est pas réellement en cours d'exécution.
Une erreur courante est de ne pas spécifier le numéro de port lors de la liaison ou de la connexion dans l'ordre des octets de réseau...
Vérifier sur le côté serveur qui écoute sur le port 2080.
Essayez d'abord de le confirmer sur le serveur de la machine par l'émission de telnet sur le port:
telnet localhost 2080
Si elle est à l'écoute, il est en mesure de répondre.
Bien qu'il ne semble pas être le cas de votre situation, parfois d'une connexion refusé d'erreur peut également indiquer qu'il y a un conflit d'adresse ip sur votre réseau. Vous pouvez rechercher de possibles conflits d'adresse ip en cours d'exécution:
et
Cette AskUbuntu question a plus d'information également.
1.Vérifiez l'état du serveur.
2.Vérifiez l'état du port.
Par exemple 3306
netstat -nupl|grep 3306
.3.Vérifiez votre pare-feu.
Par exemple, ajouter 3306
Du point de vue d'un point de contrôle du pare-feu, vous verrez un message du pare-feu si vous choisissez de Rejeter comme Action, ce qui les expose à un propective attaquant la présence d'un pare-feu devant le serveur. Le pare-feu de manière silencieuse, toutes les connexions qui ne correspond pas à la politique. Connexion refusée presque toujours à partir du serveur
J'obtiens le même problème avec mon ordinateur de travail.
Le problème est que lorsque vous entrez localhost il va de proxy adresse pas d'adresse locale, vous devez l'ignorer à suivre cette procédure
Chrome => Paramètres => Modifier les paramètres de proxy => Paramètres LAN => cochez pas utiliser de serveur proxy pour les adresses locales.
Dans Ubuntu, Essayez
sudo ufw allow <port_number>
pour permettre l'accès au pare-feu à la fois de votre serveur de base de données et d'.
J'ai eu le même message avec une cause totalement différente: la
wsock32.dll
n'a pas été trouvé. Le::socket(PF_INET, SOCK_STREAM, 0);
appel ne cesse de revenir unINVALID_SOCKET
mais la raison en était que le winsock dll n'a pas été chargé.À la fin, j'ai lancé Sysinternals processus surveiller et remarqué qu'il a recherché la dll partout mais ne la trouverez pas.
Silencieux échecs sont magnifiques!