J'ai expérimenté un peu avec des messages de socket TCP asynchrone entre deux programmes, pour transmettre des données, des nombres et/ou du texte. Ce que j'ai fait est d'utiliser un mot-clé au début de chaque message, puis séparer les valeurs avec le "|" personnage. Ainsi, un message peut ressembler à ceci:Comment séparer les messages de socket TCP
"DATA | 490 | 40517,9328222222 | 1 | 6 | 11345 | 11347 | 11344 | 11345 | 106 | 40517,8494212963"
I définir la taille de la mémoire tampon de lecture à 1024, comme la plupart des messages seront dans cette longueur. Cependant parfois je peux envoyer rapidement de nombreux messages courts où plusieurs ensemble sont moins de 1024 caractères, et il semble alors qu'il sera lu en une seule fois. Et si j'envoie un message de plus de 1024 caractères, il sera divisé. Donc, je cherche des conseils sur la façon de gérer cela. Dois-je utiliser des caractères spéciaux pour démarrer et/ou terminer chaque message? J'apprécierais quelques conseils sur la façon dont vous faites ceci ..
Merci! Qu'est-ce que vous voulez dire par sérialisation? Cela s'applique-t-il aux ordinateurs fonctionnant sous Windows standard? Avec votre dernier commentaire, cela signifie-t-il que je devrais changer la taille de la mémoire tampon en fonction du message reçu? Comment cela fonctionnera-t-il? Puisque la longueur du message n'est pas connue tant que le message n'a pas déjà été lu, je ne comprends pas exactement ce que vous voulez dire. Btw; Est-ce utile de diviser un message du côté de l'expéditeur ou cela n'aura-t-il aucun impact sur les performances? La taille sera un message de 50 caractères toutes les 200 ms, et rarement un message de 50 000 à 400 000 caractères. – bretddog
La sérialisation signifie simplement "sortie en tant que chaîne". La suggestion de @terminus serait un moyen raisonnable de le faire - convertir la longueur du message en une chaîne de longueur fixe afin qu'elle soit facilement reconvertie en un '' non signé '' du côté réception. Vous pouvez demander à lire ces nombreux octets d'abord dans un tampon de taille fixe, puis allouer un tampon pour recevoir le reste du message. Ne vous embêtez pas à diviser le message du côté émission: la pile TCP/IP effectuera la mise en paquets requise. –
bravo! Je pense que je l'ai compris maintenant :) – bretddog