2010-05-17 5 views
1

Je voudrais écrire une application qui va diffuser des données à 2400 bauds sur Internet depuis un serveur vers plusieurs clients. Les données seront les mêmes pour chaque client, et il serait probablement bon de l'envoyer en flux UDP, car la précision exacte des données n'est pas une nécessité à 100%, car il y a des sommes de contrôle intégrées au format de données et les données seront être envoyé à plusieurs reprises sur une boucle.Flux de données en temps réel vers plusieurs clients

Quelle est la meilleure façon de faire cela? Je voudrais écrire le serveur en C, mais je ne sais pas comment mieux diffuser ces données aux différents clients qui le recevraient dans tout le pays. Je suis sûr que cela semble être une façon draconienne d'aborder mon projet, plutôt que d'utiliser une sorte de commande fetch, mais je préfère le faire de cette façon si possible.

+0

Quel système d'exploitation? IPv4 ou IPv6? Vous devriez probablement google 'IP multicast' – nategoose

+0

Linux/Windows, n'a pas d'importance, et IPv4. Fera, merci. – AriX

Répondre

1

Vous voudrez peut-être jeter un oeil à la monodiffusion pour cela, en particulier si vos clients sont sur plusieurs répertoires. Vous devriez pouvoir envoyer du trafic TCP ou UDP avec vos données à chacun de vos clients, en particulier si les besoins en bande passante sont faibles. La multidiffusion IP fonctionne mieux pour les groupes de nœuds sur les réseaux proches les uns des autres.

Bouclez plusieurs adresses de client et envoyez vos données. Modérez la fréquence à laquelle vous bouclez pour limiter le débit de données.

Faites attention au problème de fiabilité: l'exactitude n'est pas le seul problème avec UDP; vous n'avez également aucune confirmation que vos données ont été reçues, et aucune garantie sur la commande.

Baud ne s'applique pas vraiment ici, car les données sont segmentées en morceaux plus ou moins discrets.

+0

Bon, je n'ai pas besoin d'accusé de réception, j'ai juste besoin qu'il soit envoyé. Et en ce qui concerne les bauds, j'ai juste besoin de limiter la vitesse. Ce n'est pas que j'ai besoin des données elles-mêmes pour sortir à 2400 bauds, évidemment c'est internet et ça ne s'applique pas. Le fait est que les données finiront par être transmises en série à un débit de 2400 bauds entre un PC et un générateur de caractères, donc je n'aurai plus besoin d'envoyer des données si rapidement qu'elles surchargeront les messages en série. . Je vais probablement juste mettre un délai d'une seconde entre les messages, ce qui devrait tout faire bien. – AriX

+0

En ce qui concerne la monodiffusion, suggérez-vous que je n'envoie les données qu'à chaque adresse IP? C'est peut-être ce que je finis par faire. – AriX

+0

Ouais, je voudrais simplement envoyer les données à chaque IP individuellement. Si j'étais vous, je le ferais avec monodiffusion, et un délai de sommeil pour commencer, et affiner à partir de là pour répondre à vos besoins. – WhirlWind