data_size = recvfrom(sock_raw , buffer , 1024, 0 , &saddr , (socklen_t*)&saddr_size);
Voici une fonction recvfrom, où je veux créer une structure pour ‘saddr’ et ‘saddr_size’ qui est déclarée dans le main()
comme suit
struct sockaddr saddr; int saddr_size; saddr_size = sizeof saddr;
et au lieu du tampon mentionné dans write()
ci-dessous api, je dois utiliser la variable struct.
int cont= write(logfile,buffer,data_size);
Ma question est la suivante: j’ai utilisé la structure ci-dessous. Est-ce la manière de définir la structure pour les champs suivants? Est-ce déclaré correctement? Si ce n’est pas le cas, quelqu’un me guide pour le corriger.
struct data{ unsigned char buffer[1024]; unsigned long int saddr; // struct sockaddr saddr; int saddr_size; };
J’ai supposé cela comme votre structure.
struct fields{ unsigned char msg[1024]; // buffer received. char saddr[14]; // network socket address received. int sock_size; // sizeof socket structure. }data;
Après l’appel de recvfrom
, définissez / initialisez vos variables de structure (c’est-à-dire, copier le tampon, l’adresse réseau, la taille des champs de structure).
Maintenant, enregistrez les données de structure dans le fichier
fprintf(logfile,"%s %s %d",data.msg,data.saddr.address,data.saddr_size);