[SOCKET] Envoi de structure
Bonjour,
j'ai crée une socket UDP pour envoyer les données contenues dans une structure que j'ai faite.
Code:
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:
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 :(