Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为recvfrom()函数中提到的字段定义结构?_C_Sockets - Fatal编程技术网

如何为recvfrom()函数中提到的字段定义结构?

如何为recvfrom()函数中提到的字段定义结构?,c,sockets,C,Sockets,下面的程序接收/捕获来自internet的数据包并写入一个文件(日志文件)。在我的另一个程序中,我使用read()func而不是recvfrom(),但是仅仅发送缓冲区并不能正确处理数据包。因此,我考虑再发送两个字段,它们位于recvfrom函数中 int main() { int saddr_size,data_size; struct sockaddr saddr; unsigned char *buffer = (unsigned char *) malloc(1024);

下面的程序接收/捕获来自internet的数据包并写入一个文件(日志文件)。在我的另一个程序中,我使用read()func而不是recvfrom(),但是仅仅发送缓冲区并不能正确处理数据包。因此,我考虑再发送两个字段,它们位于recvfrom函数中

int main()
{
int saddr_size,data_size;
struct sockaddr saddr;

unsigned char *buffer = (unsigned char *) malloc(1024);    
   while(1)
   { 

    saddr_size = sizeof saddr;
    //Receive a packet      
    data_size = recvfrom(sock_raw , buffer , 1024, 0 , &saddr ,(socklen_t*)&saddr_size);
    int cont= write(logfile,buffer,data_size);            

   }        
return 0;
}

在上面的程序中,我需要定义结构到&saddr和(socklen\u t*)&saddr\u size)。这不是只发送我需要发送的缓冲区值&saddr和(socklen\u t*)&saddr\u size)。我该怎么做?我的意思是说如何定义struct to&sddr和(socklen\u t*)&saddr\u size)??请有人指导我。

不,您不发送这些字段,这些字段由
recvfrom
功能根据收到的数据包中的信息自动填写。

。千万不要发送
(socklen_t*)和saddr_size
;声明
socklen\u t saddr\u大小
。当
socklen\u t
int
具有不同的内部表示时,您的问题将具有未定义的行为。