2011-01-27 5 views
1

J'envoie des données via un socket UDP et je le reçois en boucle avec read(). Les données d'entrée se présente comme suit:Lire le message entier à partir du socket UDP

String 1 
String 2 
String 3 
.... 

I écrire des données sur des send(), chaque chaîne une après l'autre (dans une boucle). Comment est-ce que je m'assure que je peux reconstituer les données sur l'extrémité de réception de la manière correcte (comme j'ai mis les chaînes dedans)?

Les données reçues peuvent être divisées partout au milieu des lignes comme ceci:

Packet 0: Stri 
Packet 1: ng 1 
Packet 2: String 2 St 
Packet 3: ring 3 
... 

Dois-je présenter une coutume séquence END OF MESSAGE octets à dire? Parce que EOF ne va pas aider ici.

Je dois être en mesure de dire si un paquet est corrompu, et où les blocs de données qui appartiennent ensemble commencent et se terminent, comme je les congédia en commençant par S et se terminant par le Number! Je ne peux pas utiliser TCP car j'ai besoin d'un support de diffusion/multidiffusion.

Répondre

1

Si vous souhaitez que tous les messages d'arriver, et dans le même ordre dans lequel ils ont été envoyés, et d'avoir une « fin de message » indication, peut-être TCP est mieux :-)

(TCP fait tout cela sur la boîte.)

Questions connexes