2015-03-15 2 views
-1

En essayant de comprendre quelle méthode serait préférable de diviser un message entrant qui sera envoyé sur une application de chat. le délimiteur est^qui le divisera en un tableau de chaînes.Quelle méthode serait préférable d'utiliser sur VB.net?

une méthode est de cette façon:

lsIncommingtext.Items.Add(lblContactName.Text & "^" & Now.ToString("dd/MM/yyyy") & "^" & Now.ToString("hh:mm") & "^" & txtChatbar.Text) 

la deuxième méthode serait:

Dim lineparts() As String 
lineparts = line.Split("^") 
txtName.Text = lineparts(0) 
txtAddip.Text = lineparts(1) 

Im essayant de faire le message final soit sous la forme de: SendersName^DateSent^TimeSent^MessageData

Avec chacun de ces ^, utilisé pour diviser le message entrant.

+1

Vous feriez mieux d'utiliser un séparateur "étranger", tel que ** § **. Quelque chose qui est peu susceptible d'être utilisé dans un message de discussion. –

+1

@DerGolem: Un programme de discussion qui exclut les avocats? J'en suis! –

Répondre

1

Aucune méthode n'est idéale.

Si l'utilisateur tape 4^2 = 16, la charge utile est entièrement endommagée. Qu'est-ce que vous voulez faire est de créer un format qui survivra à toutes les entrées de l'utilisateur ainsi que la fragmentation des données.

par exemple
Faire le premier octet du message soit le type de message (par exemple 1 = String message, 2 = Mises à jour système, 3 = Transfert de fichiers, 4 = mises à jour de l'état de visibilité ... blah eider).

Les 8 octets suivants (Int64) seront la longueur de la charge utile. Cela vous indique combien d'octets vous devez lire à partir du NetworkStream avant d'avoir le message complet. Int64 est bon si vous allez faire des transferts de fichiers. Pour tout le reste Int32 (4 octets) ira bien.

Maintenant vient la charge utile. La charge utile peut être ce que vous voulez tant qu'elle se termine après la longueur définie plus tôt, car votre message suivant commence immédiatement après la fin de la charge.

+0

En termes de division des chaînes en réseaux, quelle est la manière la plus efficace d'aborder cela? – bc95

+1

Oui - je ne vais pas t'aider à faire le bordel. Surtout que vous avez déjà écrit le code et êtes capable de le tester vous-même. –