JoebarGlut
Messages postés111Date d'inscriptionmercredi 13 août 2003StatutMembreDernière intervention17 octobre 2007
-
22 mars 2006 à 12:31
JoebarGlut
Messages postés111Date d'inscriptionmercredi 13 août 2003StatutMembreDernière intervention17 octobre 2007
-
22 mars 2006 à 19:27
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 ?
JoebarGlut
Messages postés111Date d'inscriptionmercredi 13 août 2003StatutMembreDernière intervention17 octobre 2007 22 mars 2006 à 13:08
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
+
JoebarGlut
Messages postés111Date d'inscriptionmercredi 13 août 2003StatutMembreDernière intervention17 octobre 2007 22 mars 2006 à 19:27
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...