Bonjour,
j'ai un problème de lecture/écriture dans un socket. Je me suis déjà heurté à ce problème mais je n'ai pas trouvé la solution.
Un client écrit des données dans le socket et le serveur doit les récuperer. Plus précisement , dans mon programme, le client écrit d'abord un char puis un entier. Pour l'instant je veux juste que le serveur affiche ça.

Voici le code le bout de code correspondant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
// SERVEUR
	// reading socket for command 
	numbytes = recv(client_sock, &command, sizeof(int), 0);
	checkRecv(numbytes);
	printf("\nCommand: %c", command);
 
	// reading socket for data size	
	numbytes = recv(client_sock, &data_size, sizeof(int), 0);
	checkRecv(numbytes);		
	printf("\nData size: %i", data_size);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
// CLIENT
	char *message = "Hello there!";
	int data_size;
	// command type
	numbytes = send(sock, &ECHO, sizeof(char), 0);	// sending message
	checkSend(numbytes);
	printf("\nCommand : %c", ECHO);
 
	sleep(TEMPO);
 
	// data size
	data_size = strlen(message);
	numbytes = send(sock, &data_size, sizeof(int), 0);	// sending message
	checkSend(numbytes);
	printf("\nData size : %i bytes", data_size);
ECHO est un char qui est dans un fichier .h à part et vaut 1.

Le serveur récupère bien la 1ere lecture dans le socket mais la deuxieme ne se fait plus bien. Il affiche un entier aléatoire. Vous remarquer que j'ai mis une temporisation dans le client. Si je mets 1sec de temporisation, le serveur arrive bien à récuperer la deuxième lecture. !? Etrange non ?

merci.