tomap | Salut, je voudrai savoir si les fonctions ci-dessous que j'ai défini pour la transition (resp réception) de données sont correctes et efficases. Sinon comment les améliorer ? Remarque: dans la fonction d'envoi, je commence par envoyer (en mode texte) la taille de la donnée qu'on veux envoyer puis la donnée elle même, et dans la fonction de réception je reçois avant tout, la taille de la données que je dois recevoir, puis la donnée elle même. Merci. Code :
- /******** Reception *************/
- int RecvData (SOCKET sock, char *data, int sizeof_data)
- {
- int len_data, data_receved = 0, n;
- char len_data_buffer[10];
- /* Recevoir la taille de data */
- if (n = recv (sock, len_data_buffer, sizeof len_data_buffer - 1, 0) == SOCKET_ERROR);
- return SOCKET_ERROR;
- len_data_buffer[n] = 0;
- len_data = atoi (len_data_buffer);
- while (data_receved < len_data)
- {
- n = recv (sock, data + data_receved, sizeof_data - data_receved, 0);
- if (n >= 0) data_receved += n;
- else return SOCKET_ERROR;
- }
- return data_receved;
- }
- /******** Envoi *************/
- int SendData (SOCKET sock, char *data)
- {
- int len_data = strlen(data), data_sent = 0, n;
- char len_data_str[10];
- sprintf (len_data_str, "%d", len_data);
- if ((n = send (sock, len_data_str, strlen(len_data_str), 0)) == SOCKET_ERROR)
- return SOCKET_ERROR;
- while (data_sent < len_data)
- {
- n = send (sock, data + data_sent, len_data - data_sent, 0);
- if (n >= 0) data_sent += n;
- else return SOCKET_ERROR;
- }
- return data_sent;
- }
|
Message édité par tomap le 31-03-2009 à 14:11:34
|