简体   繁体   English

怀疑在C套接字程序中定义结构

[英]Doubt in defining structure in c socket program

  data_size = recvfrom(sock_raw , buffer , 1024, 0 , &saddr ,
                                               (socklen_t*)&saddr_size);

Here is a recvfrom function, where I want to create a struct to 'saddr' and 'saddr_size' which is declared in the main() as follows 这是一个recvfrom函数,在这里我想创建一个结构到'saddr'和'saddr_size',在main()声明如下

  struct sockaddr saddr;
  int saddr_size;
  saddr_size = sizeof saddr;

and instead of buffer mentioned in the below write() api I have to use the struct variable. 而不是下面的write() api中提到的缓冲区,我必须使用struct变量。

  int cont= write(logfile,buffer,data_size);

My question is: Below I have used structure. 我的问题是:下面我使用了结构。 Is this the way to define struct for the following fields? 这是为以下字段定义结构的方法吗? Is it declared correctly? 声明正确吗? If not please somebody guide me to correct it. 如果没有,请有人指导我进行更正。

  struct data{ 
      unsigned char buffer[1024];
      unsigned long int saddr; 
      //   struct sockaddr saddr;
      int saddr_size;
  }; 

I assumed this as your structure. 我认为这是您的结构。

struct fields{ 
    unsigned char msg[1024];      // buffer received.
    char saddr[14];               // network socket address received.
    int sock_size;                // sizeof socket structure.
}data; 

After the recvfrom call, define/initialize your structure variables(ie, copy buffer,network address, size to the structure fields). recvfrom调用之后,定义/初始化您的结构变量(即,复制缓冲区,网络地址,结构域的大小)。

Now, log the structure data to the file 现在,将结构数据记录到文件中

fprintf(logfile,"%s %s %d",data.msg,data.saddr.address,data.saddr_size); 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM