Bonjour,
Je dois realiser un client/serveur en C sous unix en utilisant des sockets.
J'usqu'ici pas de soucis.
Mais quand j'essais d'envoyer un structure particuliere, je n'arrive pas a recuperer mes donnees, l'exemple suivant sera plus explicite je pense.

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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include "stdafx.h"
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
 
struct MY_STRUCT {
  int int1;
  int int2;
  char* buffer;
};
 
MY_STRUCT getStruct()
{
  MY_STRUCT myStruc;
  myStruc.int2 = 1;
 
  myStruc.buffer = (char*) malloc(10*sizeof(char));
  fgets(myStruc.buffer, 10, stdin);
  myStruc.int1 = strlen(myStruc.buffer);
 
  return myStruc;
}
 
void SendData(char * data)
{
  // envois des data via ma socket
}
 
void ReceiveData(char* data)
{
  // retrouver la taille du buffer
  // reallouer data avec la bonne taille
  // retrouver le buffer
}
 
int _tmain(int argc, _TCHAR* argv[])
{
  MY_STRUCT myStruc = getStruct();
  // envoi des donnees via ma socket
  SendData((char*)&myStruc);
 
  // initialisation par defaut
  char* data = malloc(1024);
  ReceiveData(data);
 
  return 0;
}
Est ce que quelqu'un aurait une idee?
Merci d'avance

Edit : petite precision, si mon buffer a une taille definie je n'ai pas de soucis. Mais le but est d'avoir une taille indefinie...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
struct MY_STRUCT {
  int int1;
  int int2;
  char buffer[100];
};