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 :
Seulement sous Win7 et bien cela ne fonctionne plus !
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);
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 :
En ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part InfosServeur.sin_addr.s_addr = INADDR_BROADCAST; // Destination IP = BDCST
Et bien ca fonctionne partout meme sous Seven.
Code : Sélectionner tout - Visualiser dans une fenêtre à part InfosServeur.sin_addr.s_addr = inet_addr("192.168.1.255"); // Destination IP = BDCST
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 ????
Partager