如何为recvfrom()函数中提到的字段定义结构?
下面的程序接收/捕获来自internet的数据包并写入一个文件(日志文件)。在我的另一个程序中,我使用read()func而不是recvfrom(),但是仅仅发送缓冲区并不能正确处理数据包。因此,我考虑再发送两个字段,它们位于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);
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
具有不同的内部表示时,您的问题将具有未定义的行为。