Doute dans la définition de la structure dans le programme de socket c

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);