Salut,

J'ai une application client/serveur.
Mon client envoie un broadcast sur le réseau.

Apres plusieurs tests cela fonctionne parfaitement sous XP avec ces infos :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
      InfosServeur.sin_family = AF_INET;
      InfosServeur.sin_addr.s_addr = INADDR_BROADCAST; // Destination IP = BDCST
      InfosServeur.sin_port = htons(PORT_SERVICE_SERVEUR); // Destination port = 1337
 
      memset(Tampon,0,LONGUEURMSG); // On reinitialise le tampon
      strcpy(Tampon,"DECOUVERTE"); // Copie la chaine de caractère dans buffer
 
      LongueurMessage = sendto(idSocket, Tampon, strlen(Tampon), 0, (SOCKADDR *)&InfosServeur, TailleStructure);
Seulement sous Win7 et bien cela ne fonctionne plus !
J'ai trouvé pourquoi, en effet sous seven il y a des restrictions sur le broadcast en effet on ne peut pas emettre sur 255.255.255.255.

Alors, en transformant cette ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
InfosServeur.sin_addr.s_addr = INADDR_BROADCAST; // Destination IP = BDCST
En ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
InfosServeur.sin_addr.s_addr = inet_addr("192.168.1.255"); // Destination IP = BDCST
Et bien ca fonctionne partout meme sous Seven.

Mon problème maintenant c'est de trouver quelle adresse IP transformer en broadcast avec le masque !

En effet le client peut avoir plusieurs interfaces, le INADDR_BROADCAST ne s'en souciait pas mais la je bloque pour savoir comment la trouver sans demander à l'utilisateur ????