2010-05-11 6 views
1

J'essayais d'écrire un serveur udp qui envoie une instance d'un fichier à plusieurs clients. Maintenant, je suppose que je parviens à connaître l'adresse de ces clients statiquement (pour par souci de simplicité) et maintenant je veux envoyer ce paquet à ces adresses. Alors, comment exactement j'ai besoin de remplir la structure sockaddr pour contenir l'adresse de ces clients.Je prends un tableau de la structure sockaddr (pour contenir l'adresse du client) et essayer d'envoyer à chacun d'eux à la fois. Maintenant, le problème est de remplir la structure sockaddr individuelle pour contenir l'adresse du client. Je tentais de faire quelque chose comme çal'envoi d'un paquet à plusieurs clients à la fois de la socket udp

sa[1].sin_family = AF_INET; 
sa[1].sin_addr.s_addr = htonl(INADDR_ANY);//should'nt I replace this INADDR_ANY with client ip?? 
sa[1].sin_port = htons(50002); 

-moi si ce n'est pas la bonne façon. Toute votre aide à cet égard sera grandement appréciée.

Avec Merci à l'avance,

Mawia

Répondre

2

sin_addr doit être réglé à l'adresse de destination.

if (! inet_aton("1.2.3.4", &sa[1].sin_addr)) { 
    // Give up all hope 
} 
// Everything is copacetic. 
+0

Merci beaucoup monsieur, pour la réponse.Il était très très utile. Merci et merci encore! Merci! – mawia

+1

copacetic est un mot fantastique. – Glycerine

1

On dirait que vous parlez de multicast. C'est un peu plus difficile que trivial.

Jetez un oeil à this thread pour découvrir comment vous abonner à un groupe de multidiffusion (pour le côté client) et comment envoyer des paquets de multidiffusion (pour le côté serveur). Il est discuté en utilisant python, mais seuls les wrappers de bas niveau autour de la bibliothèque de socket sont utilisés, il devrait donc être assez simple de traduire des exemples dans n'importe quelle langue.

+0

Merci pour la réponse! – mawia

Questions connexes