J'essaie d'écrire un programme serveur en C, en utilisant un autre client, j'obtiens cette erreur lorsque j'essaye de me connecter via le port 2080 par exemple.
connection refused
Quelles peuvent être les raisons de cette erreur?
c
sockets
connection-refused
Zenet
la source
la source
ping
édité, downforeveryoneorjustme.com a montré que ce n'est pas seulement moi et que je pourrais aussi y accéder via FTP. Après quelques minutes, les erreurs ont été résolues.connect()
dépend d'une adresse IP et d'un port spécifiques prêts à être utilisés.Réponses:
Il peut y avoir de nombreuses raisons, mais les plus courantes sont:
Le port n'est pas ouvert sur la machine de destination.
Le port est ouvert sur la machine de destination, mais son arriéré de connexions en attente est plein.
Un pare-feu entre le client et le serveur bloque l'accès (vérifiez également les pare-feu locaux).
Après avoir vérifié les pare-feu et que le port est ouvert, utilisez telnet pour vous connecter à l'ip / port pour tester la connectivité. Cela supprime tous les problèmes potentiels de votre application.
la source
L'erreur signifie que le système d'exploitation du socket d'écoute a reconnu la demande de connexion entrante mais a choisi de la rejeter intentionnellement.
En supposant qu'un pare-feu intermédiaire ne gêne pas, il n'y a que deux raisons (à ma connaissance) pour que le système d'exploitation rejette une demande de connexion entrante. Une raison a déjà été mentionnée à plusieurs reprises: le port d'écoute auquel vous êtes connecté n'est pas ouvert.
Il y a une autre raison qui n'a pas encore été mentionnée - le port d'écoute est en fait ouvert et activement utilisé, mais son arriéré de demandes de connexion entrante en file d'attente a atteint son maximum, il n'y a donc pas de place disponible pour la demande de connexion entrante à mettre en file d'attente à ce moment. Le code du serveur n'a pas encore appelé accept () suffisamment de fois pour finir de vider les emplacements disponibles pour les nouveaux éléments de file d'attente.
Attendez quelques instants et réessayez la connexion. Malheureusement, il n'y a aucun moyen de faire la différence entre «le port n'est pas du tout ouvert» 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.
la source
Si vous essayez d'ouvrir une connexion TCP vers un autre hôte et que vous voyez l'erreur «Connexion refusée», cela signifie que
RST est un bit sur le paquet TCP qui indique que la connexion doit être réinitialisée. Habituellement, cela signifie que l'autre hôte a reçu votre tentative de connexion et refuse activement votre connexion TCP, mais parfois un pare-feu peut bloquer votre paquet TCP SYN et vous renvoyer un TCP RST.
Voir https://tools.ietf.org/html/rfc793 page 69:
la source
Connexion refusée signifie que le port auquel vous essayez de vous connecter n'est pas réellement ouvert.
Donc, soit vous vous connectez à la mauvaise adresse IP, soit au mauvais port, soit le serveur écoute sur le mauvais port, soit ne fonctionne pas réellement.
Une erreur courante consiste à ne pas spécifier le numéro de port lors de la liaison ou de la connexion dans l'ordre des octets du réseau ...
la source
Vérifiez côté serveur qu'il écoute sur le port 2080. Essayez d'abord de le confirmer sur la machine serveur en émettant telnet sur ce port:
telnet localhost 2080
S'il écoute, il est capable de répondre.
la source
1.Vérifiez l'état de votre serveur.
2.Vérifiez l'état du port.
Par exemple 3306
netstat -nupl|grep 3306
.3.Vérifiez vos pare-feu. Par exemple, ajoutez 3306
la source
Bien que cela ne semble pas être le cas pour votre situation, parfois une erreur de refus de connexion peut également indiquer qu'il y a un conflit d'adresse IP sur votre réseau. Vous pouvez rechercher d'éventuels conflits IP en exécutant:
et
Cette question AskUbuntu contient également plus d'informations.
la source
Du point de vue d'un pare-feu Checkpoint, vous verrez un message du pare-feu si vous choisissez effectivement Rejeter en tant qu'action, exposant ainsi à un attaquant propice la présence d'un pare-feu devant le serveur. Le pare-feu supprimera silencieusement toutes les connexions qui ne correspondent pas à la stratégie. La connexion refusée provient presque toujours du serveur
la source
J'ai le même problème avec mon ordinateur de travail. Le problème est que lorsque vous entrez localhost, il va à l'adresse du proxy et non à l'adresse locale, vous devez le contourner, suivez ces étapes
Chrome => Paramètres => Modifier les paramètres proxy => Paramètres LAN => cochez Contourner le serveur proxy pour les adresses locales.
la source
Dans Ubuntu, essayez
sudo ufw allow <port_number>
d'autoriser l'accès du pare-feu à la fois à votre serveur et à votre base de données.la source
Essayez de transmettre le paramètre de port "-p":
la source
Dans mon cas, cela se produit lorsque le site est bloqué dans mon pays et que je n'utilise pas de VPN. Par exemple, lorsque j'essaye d'accéder à vimeo.com depuis l'Indonésie qui est bloqué.
la source
J'ai eu le même message avec une cause totalement différente: le
wsock32.dll
n'a pas été trouvé. L'::socket(PF_INET, SOCK_STREAM, 0);
appel a continué à renvoyer unINVALID_SOCKET
mais la raison était que la DLL winsock n'était pas chargée.À la fin, j'ai lancé le moniteur de processus de Sysinternals et j'ai remarqué qu'il cherchait la dll «partout» mais ne la trouvait pas.
Les échecs silencieux sont super!
la source