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);ECHO est un char qui est dans un fichier .h à part et vaut 1.
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);
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.
Partager