Bonjour,
Une fois de plus je fais appel à plus fort que moi.
Cette fois ci un problème très étrange! Enfin je suis sûr que c'est tout bête, mais j'avoue que je ne comprends pas du tout d'où peut venir mon erreur!
Comme le dit si bien le titre, cela provient de la fonction bind.
Je programme tranquillement un client/serveur basique en local ( 127.0.0.1 ). Jusque là ça fonctionne nickel!
Tant mieux, je passe au test suivant, le test sur le net ( ip non local quoi ), et là impossible de passer le bind!
Pourtant c'est strictement le même code qu'en local, et c'est le même code qu'on trouve partout sur internet à savoir :
Sachant que j'ai quand même épuré un peu ici. J'ai enlevé la gestion du thread réseau et la gestion des erreurs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SOCKET sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP ); SOCKADDR_IN address; addressRecv.sin_addr.s_addr = inet_addr( INADDR_ANY ); addressRecv.sin_family = AF_INET; addressRecv.sin_port = htons( port ); bind( sock, (SOCKADDR *)&address, sizeof(address) ); // = SOCKET_ERROR ( sauf quand je test en local )
La fonction WSAGetLastError() me renvoie un joli "0" pour finir le tout...
J'ai pensé à un problème de pare feu, mais j'ai tout désactivé et rien à y faire.
Merci pour votre aide.
EDIT : je confirme, quand je mets "127.0.0.1" à la place de INADDR_ANY ça marche...
Partager