Bonjour à tous,
J'aimerais réaliser un broadcast par UDP sur le port 12001 (ou autre) ! J'ai fais pas mal de recherches et en glanant deux trois bout de codes par ci par la, j'ai fait un petit programme ... Néanmoins, après avoir sniffé sur ma carte réseau, je ne vois aucunde demande de broadcast... mon programme ne marche donc pas xD !
Si quelqu'un pouvait m'éclairer sur ce probleme...
Je vous remercie d'avance !
Mon code :
#include <iostream>
#include <io.h>
#include <winsock.h>
#include <winsock2.h>
#include <windows.h>
using namespace std;
int ouvreSocket(int port);
int main(void)
{
int on ;
int tailleAd;
int skDesc;
int portDiff = 6001;
struct sockaddr_in adDiffusion;
unsigned long adDiff;
char nbNet;
skDesc = ouvreSocket(6001); /* Créé socket UDP (déconnectée) */
adDiff = inet_addr("255.255.255.255"); /* Adresse -> broadcast */
printf("Adresse de broadcast = 0x%lX\n", adDiff);
adDiffusion.sin_addr.s_addr = adDiff; /* Identificateur de l'hote */
adDiffusion.sin_family = AF_INET; /* Type de la socket du serveur */
adDiffusion.sin_port = htons(portDiff); /* Port des serveurs */
tailleAd = sizeof(adDiffusion);
/* Met la socket en mode broadcast */
on = 1;
setsockopt(skDesc, SOL_SOCKET, SO_BROADCAST, (char *)&on, sizeof(on));
sendto(skDesc, &nbNet, sizeof(long), 0, (struct sockaddr*) &adDiffusion, tailleAd);
//return 0;
}
int ouvreSocket(int port)
{
int skD;
int retVal;
size_t tailleAd;
struct sockaddr_in adLocale;
adLocale.sin_family = AF_INET; /* Type de la socket (TCP/IP) */
adLocale.sin_port = htons(port); /* Affectation du port local */
adLocale.sin_addr.s_addr = htonl(INADDR_ANY); /* Identificateur de l'hote */
skD = socket(AF_INET, SOCK_DGRAM, 0); /* Créé socket UDP (déconnectée) */
if(skD == -1)
{
perror("Erreur lors de la création de la socket\n");
return -1;
}
tailleAd = sizeof(adLocale);
retVal = bind(skD, (struct sockaddr*) &adLocale, tailleAd); /* Attache socket */
if(retVal == -1)
{
perror("Erreur lors du bind\n");
close(skD);
return -1;
}
return skD;
}
Configuration: Windows XP
Internet Explorer 6.0