2009-03-10 8 views
1

Je construis une application de chat udp lan simple dans vb.net et je me demande comment je devrais diviser mes paquets. Chaque paquet envoyé devrait avoir comme un ID, un nom d'utilisateur et une adresse IP d'où il vient et peut-être aussi une partie de commande pour comme joindre ou quitter pour mettre à jour ma liste d'utilisateurs et un message texte. J'aimerais savoir quel est le moyen le plus simple de mettre tout cela dans un simple paquet, puis de le diviser facilement et d'accéder à différentes parties de celui-ci lorsqu'il est reçu. Merci.créer un paquet UDP je peux diviser

J'utilise UDP puisque c'est seulement en lan, donc je suis à la diffusion *.*.*.255

EDIT: Merci pour votre réponse Jon mais je sais déjà tout cela. Ce que je veux savoir est ce qui serait le moyen le plus facile et le plus puissant pour formater mes paquets afin qu'ils incluent un nom d'utilisateur, un id, une commande et un message texte, puis l'utilisateur le décryptant pour montrer seulement le message écrit par lequel utilisateur ou si c'est une commande comme joindre ou laisser pour montrer le message approprié de rejoindre et ajouter l'utilisateur à la liste par exemple.

+0

Je suis confus quant à quel morceau de formatage vous êtes bloqué. Est-ce comment faire face aux "longs" messages? Si c'est le cas, vous aurez besoin d'une sorte d'identification de paquet séquentielle - ce qui signifie mettre en œuvre quelque chose comme TCP/IP pour faire face aux paquets perdus, etc. Si ce n'est pas le cas, veuillez clarifier. –

Répondre

0

Je voudrais probablement juste formater le paquet en XML, puis du côté réception, utiliser linq to xml pour le séparer. Vous pouvez également utiliser JSON pour le format, mais cela peut être légèrement plus difficile à analyser.

2

Créez une classe appropriée avec une méthode ToByteArray d'instance et une méthode statique FromByteArray() (pour la sérialisation vers un tableau d'octets et l'analyse d'un tableau d'octets respectivement). Ensuite, utilisez UdpClient.Send() pour l'envoyer, et UdpClient.Receive() pour le recevoir.

Vous pouvez utiliser BinaryReader/BinaryWriter et/ou BitConverter pour aider les méthodes ToByteArray et FromByteArray. Vous pouvez utiliser un MemoryStream comme un flux rapide en mémoire pour passer à BinaryReader/BinaryWriter.

+0

Intéressant le char * équivelent en C#, est d'avoir à créer environ 4-5 plus de méthodes - gentil. –

+0

@Zenikoder: Si vous parlez de "sérialisation" de la mémoire, il est plus difficile de faire les choses correctement que de les faire sonner. –

Questions connexes