以下程序从互联网接收/捕获数据包并写入文件(日志文件)。在我的其他程序中,我使用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_t *)& saddr_size)。这不是仅发送缓冲区,而是需要发送& saddr和(socklen_t *)& saddr_size)的值。我怎么能这样做?我的意思是说如何定义结构到& sddr和(socklen_t *)& saddr_size)??请有人指导我。
答案 0 :(得分:1)
不,您不发送这些字段,recvfrom
函数会自动从接收到的数据包中填写这些字段。