Bonjour,
pourrait-on me confirmer que la continuité des données en mémoire d'une structure n'est pas garantie ? Mon idée est la suivante pour la définition d'une structure de requête de client à serveur. Mettons que pour une requête de type 0 on doive transmettre data1 et pour une requête de type 1 on doive transmettre data1 et data2 :
Le client envoie toujours la même structure mais pas forcément en entier, ex :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 typedef struct { int requestType; int data1; char[20] data2; //etc... } request;
Et du côté du serveur la réception se fait en fonction de requestType, ex :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 request req; //... // Type 0, envoi de requestType et data1 uniquement (2 int) ret = send(socket, (void*)&req, sizeof(int) * 2, 0); // Type 1, envoi de requestType, data1 et data 2 ret = send(socket, (void*)&req, sizeof(int) * 2 + sizeof(char) * 20, 0);
Pensez-vous que ce principe puisse fonctionner ? (a priori je dirais que non)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 request req; //... // Réception du type de requête ret = recv(socket, (void*)req->requestType, sizeOf(req.requestType), 0); // Poursuite de la lecture des données if(req->requestType > -1) { ret = recv(socket, (void*)req->data1, sizeOf(req.data1), 0); if(req->requestType > 0) { ret = recv(socket, (void*)req.data2, sizeOf(req.data2) * 20, 0); } //etc. }
Merci d'avance.
(Je vais essayer de mon côté mais je n'ai pas de compilateur sous la main.
Partager