Voilà, pour apprendre le C/C++, je me suis lancé dans l'écriture d'un "chat" ressemblant à irc.

J'utilise winsock2 et le système multi thread (DWORD WINAPI) comme il nous est présenté dans le tuto: http://khayyam.developpez.com/articl.../multithreads/

La communication serveur/client marche très bien en local, mais ne fonctionne pas en externe.

Je m'explique, je suis derrière un routeur qui redirige le port 80 sur la machine qui heberge le serveur et le client.

Le serveur se bind correctement sur le port 80 et écoute sur toute les adresses :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 ServerAddr.sin_family = AF_INET;
 ServerAddr.sin_port = htons(80);
 ServerAddr.sin_addr.s_addr = INADDR_ANY;
En donnant au client mon adresse externe et le port 80, le serveur detecte sa connection 30 secondes après la connection, mais le client ne recoit jamais rien et le serveur "l'éjecte" au niveau de ma boucle while (située dans le thread client) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
while(clients[id].active && recv(clients[id].soc, msg, PACKET_SIZE, 0) != -1) {
Cependant, tout marche parfaitement lorsque je retire mon routeur et que je branche ma machine directement sur mon modem.

Est-ce un problème au niveau de mon code?
J'espère que je ne me trompe pas de section avec un problème de routeur...

Si vous pouviez me donner un petit indice, ce serait avec plaisir!

Merci!