怀疑在c socket程序中定义结构

时间:2013-11-20 06:00:40

标签: c sockets

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

这是一个recvfrom函数,我想创建一个'saddr'和'saddr_size'的结构,它在main()中声明如下

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

而不是下面write() api中提到的缓冲区,我必须使用struct变量。

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

我的问题是:下面我使用了结构。这是为以下字段定义结构的方法吗?声明正确吗?如果不是,请有人指导我纠正它。

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

1 个答案:

答案 0 :(得分:2)

我认为这是你的结构。

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

recvfrom调用之后,定义/初始化结构变量(即复制缓冲区,网络地址,结构字段的大小)。

现在,将结构数据记录到文件

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