Connection Refused

Signaler
Messages postés
111
Date d'inscription
mercredi 13 août 2003
Statut
Membre
Dernière intervention
17 octobre 2007
-
Messages postés
111
Date d'inscription
mercredi 13 août 2003
Statut
Membre
Dernière intervention
17 octobre 2007
-
Salut,




Voici mon probleme (j'utilise la socket api windows avec WSAAsyncSelect) :
Lorsque j'ai un serveur (dedie) qui accepte sur le port1, alors 2 clients en 127.0.0.1 s'y connectent.
Le premier se mets en mode accept sur un autre port port2 pour pas etre en conflit. A ce moment la le deuxieme client se connecte au premier client par le port2.
Jusque la tout fonctionne.
Maintenant lorsque je teste en reseau local :
Mon serveur dedié (192.168.1.5) accepte 2 clients (192.168.1.3 et 192.168.1.4).
Les deux clients se connectent san probleme au dedié.
le premier client accepte sur port2 (normalement plus de conflit mais je laisse ce port pour plus tard).
Le accepte reussi.
Mon client 2 se connecte alors a 192.168.1.3 sur port2 et la ca fonctionne plus !
Ca echoue au niveau du connect apres FD_ACCEPT. erreur renvoyée : 10061 WSACONNREFUSED connexion refusée par le serveur distant :(
J'ai un routeur avec le NAT configuré avec les port1 et port2 ouvert en TCP sur mes 3 machines.
Quelqu'un a une idee ?

5 réponses

Messages postés
111
Date d'inscription
mercredi 13 août 2003
Statut
Membre
Dernière intervention
17 octobre 2007

*rectification* FD_CONNECT et pas FD_ACCEPT
Messages postés
111
Date d'inscription
mercredi 13 août 2003
Statut
Membre
Dernière intervention
17 octobre 2007

Ah je viens de tester par l'adresse internet et le numero d'erreur renvoyé par connect est different : 10060, connection time out... bizare.
Messages postés
111
Date d'inscription
mercredi 13 août 2003
Statut
Membre
Dernière intervention
17 octobre 2007

oups j'avais pas lu ceci :
If the error code returned indicates the connection attempt failed (that is, WSAECONNREFUSED, WSAENETUNREACH, WSAETIMEDOUT) the application can call connect again for the same socket... lol v tester
+
Messages postés
1491
Date d'inscription
dimanche 19 novembre 2000
Statut
Modérateur
Dernière intervention
7 juillet 2014

Les erreurs faut pas les prendrent textuellement. Ensuite t'as pas besoin de changer le port pour faire du multiclient ...
Messages postés
111
Date d'inscription
mercredi 13 août 2003
Statut
Membre
Dernière intervention
17 octobre 2007

Non je change de port pour eviter les conflits lorsque je fais des tests a partir de la meme IP (internet ou 127.0.0.1) mais lorsque j'utilise les IP locales il n'y en a pas besoin.
La je viens de passer ma journee a passer d'un ordi a l'autre a esseyer de comprendre comment ne pas etre gené par le routeur et c'est vraiment pas simple, foutus protections, ca devrais pas bloquer des acces autorisés !

J'ai testé cette config avec mes 3 machines : IP LOCALE
SD (192.168.1.3)
C1 (192.168.1.4)
C2 (192.168.1.5)
SD accept() sur port 4006.
C1 connect(192.168.1.3) sur SD port 4006.
C2 connect(192.168.1.3) sur SD port 4006.
C1 accept() sur port 4007
C2 connect(192.168.1.4) sur C1 port 4007 => 10061 WSAECONNREFUSED

Celle ci en passant par l'ip INTERNET
SD (192.168.1.3)(213.129.45.22)
C1 (192.168.1.3)(213.129.45.22)
C2 (83.21.6.81)
SD accept() sur port 4006.
C1 connect(213.129.45.22) sur SD port 4006.
C2 connect(213.129.45.22) sur SD port 4006.
C1 accept() sur port 4007
C2 connect(213.129.45.22) sur C1 port 4007 => 10061 WSAECONNREFUSED

Avec deux ordi : 1 local et 1 autre local avec le serveur dedié en passant par l'ip INTERNET.
SD (192.198.1.3) (213.129.45.22)
C1 (192.168.1.3) (213.129.45.22)
C2 (192.168.1.5) (213.129.45.22)
SD accept() sur port 4006.
C1 connect(213.129.45.22) sur SD port 4006.
C2 connect(213.129.45.22) sur SD port 4006.
C1 accept() sur port 4007
C2 connect(213.129.45.22) sur C1 port 4007 => CA MARCHE ! (enfin dans un sens seulement. Si c'est C2 qui accepte et C1 qui se connecte => 10061)

Tout sur le meme ordi :
SD (127.0.0.1)
C1 (127.0.0.1)
C2 (127.0.0.1)
SD accept() sur port 4006.
C1 connect(127.0.0.1) sur SD port 4006.
C2 connect(127.0.0.1) sur SD port 4006.
C1 accept() sur port 4007
C2 connect(127.0.0.1) sur C1 port 4007 => CA MARCHE dans les deux sens ! mais bon...

Enfin voila j'ai plus de neurones...