J'ai créé une application de type client-serveur qui réagit bizarrement lorsque je fais plusieurs send consécutifs vers une même socket.
Au cours de mes tests pour débugger, j'ai pu observer le comportement suivant :
Sur le serveur, je fais
int a = send (sock1, ..., ...)
int b = send (sock1, ..., ...)
avec un printf, je controle les valeurs de a et de b qui sont respectivement 8 et 9, ce qui signifie que les deux envois se sont bien passés et qu'il a envoyé 2 chaines de caractères (l'une de taille 8, l'autre de taille 9).
Sur le client, j'ai un thread de réception qui lance un autre thread pour le traitement dès qu'il recoit des données. Le code est du style :
while (1)
{
nbrecu = recv(sock2, ..., ...);
if (nbrecu > 0) CreateThread (..., traitement, ...)
}
L'ennui, c'est qu'avec tout ca, la valeur de nbrecu au moment de la réception est 17, soit 8+9, ce qui signifie qu'il m'a concaténé le contenu des deux messages (et effectivement, c'est ce que j'observe dans mon traitement de réception).
Y'a t il un moyen d'empecher cette concatenation? J'ai essayer de désactiver l'algorithme de Nagle dans les socket mais ca n'a rien changé.
Si quelqu'un a une idée...
D'avance merci.
--
Chris