Bonjour,
j'ai crée une socket UDP pour envoyer les données contenues dans une structure que j'ai faite.



Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
soc = socket(AF_INET, SOCK_DGRAM, 0);
           (void)memset(&s_addr, 0, sizeof(s_addr));
           s_addr.sin_family = AF_INET;
           s_addr.sin_port   = htons(162);
           ((struct sockaddr_in *)(&(s_addr)))->sin_addr.s_addr = *(unsigned long*)&(tramesnmp->trame.trap.manaddr.valeur);
           sendto(soc,&tramesnmp,sizeof(tramesnmp),0,(struct sockaddr *)&s_addr, sizeof(struct sockaddr_in));
 
           closesocket(soc);
Cette structure est en fait composé d'un ensemble de sous-structures dans le membre principal est trame snmp.

Le problème est que quand il envoie la trame, celle-ci ne contient que 4 octets et j'avoue que ça me dépasse

Ma structure ressemble à ça

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
 
...
typedef struct
{
CODAGEVAR           donnee;
CODAGECHAR          timeticks;  /* temps*/
CODAGEINT           typetrap;   /* Trap */
CODAGECHAR          oid ;       /*Object identifier*/
CODAGEADDR          manaddr;    /*adresse manager SNMP */
CODAGECHAR          spef;       /* code de l'erreur (ici code specifique)*/
CODAGECHAR          error;      /* nom de l'erreur */
}TRAPPDU;
 
typedef struct
{
CODAGEINT           version;    /*version de SNMP*/
CODAGECHAR          community;  /* mot de passe entreprise*/
CODAGECHAR          carte;      /* type carte */
char                *tag;
int                 longueur;
TRAPPDU             trap;
}TRAPSENDER;
 
typedef struct
{
char                *tag;
int                 longueur;
TRAPSENDER          trame;
}TRAPSNMP;
Si quelqu'un pouvait me dire deux choses
1) savoir si quand j'envoie ma structure tout part ou si il faut modifier celle-ci
2) savoir pourquoi actuellement ça marche pas

Si vous aviez quelques minutes, ça ne doit pas etre trop dur mais j'avoue que je ne trouve pas