RDV+DIAL chat illimit� dans ta r�g!
no save
Assistance
Achat
News

Forum | programmation
[C++] Probleme avec un broadcast UDP
Cédric, le ven. 16 mai 2008 à 16:00:43
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


cédric
mai 08
Suivant
REPONSES
cédric
mai 08
Char Snipeur
mai 08
cédric
mai 08
Char Snipeur
mai 08
cédric
mai 08
Cedric
mai 08
Char Snipeur
mai 08
Cedric
mai 08
Char Snipeur
mai 08
Cedric
mai 08
Version Web
Réalisé par RedShift
no save