Bonjour à tous,

J'essaie de faire du broadcast pour une application, voici mon code coté serveur :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
    struct sockaddr_in broadcast;
    broadcast.sin_addr.s_addr = INADDR_BROADCAST;
    broadcast.sin_family = PF_INET;
    broadcast.sin_port =htons(33333);
 
    int sock= socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
 
    int on = 1;
    char msg[1024];
    strcpy(msg,message.c_str()); // message passé en parametre de fonction, c'est un string
 
    int idSet = setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (char*)&on, sizeof(on));
    if(idSet == -1)
        erreur("Probleme de setsockopt");
    else cout<<idSet;
 
    int idSend = sendto(sock, msg, sizeof(msg),0, (struct sockaddr*)&broadcast, sizeof(broadcast));
    if(idSend== -1)
    {
        perror("Erreur sendto()");
        erreur("Erreur envoi de message par le broadcast");
    }
J'ai le droit en résultat à : Erreur sendto() : Network is unreachable

J'explique le contexte (en gros):
J'ai un serveur qui lance un thread à chaque fois qu'un client se connecte. Si un client fais une action particulière je dois pouvoir en avertir les autres clients connectés, d'où l'utilisation de broadcast.

Voila j'espere que quelqu'un pourra m'éclairer la dessus, et si vous avez besoin d'autres explciations sur le reste de mon code, je me tiens à votre disposition

Cordialement

P.S : Tapez pas trop fort si j'ai fait une grosse connerie