linux下如何抓取发给非本机的ip数据包
int main(int argc,char **argv)
{
int sockfd;
struct sockaddr_in addr;
char RecvBuf[MAX_PACK_LEN];
int bind_rc;
int len;
bzero(&addr,sizeof(struct sockaddr_in));
addr.sin_family=AF_INET;
addr.sin_port=htons(port1);
addr.sin_addr.s_addr = INADDR_ANY;
sockfd=socket(AF_INET,SOCK_RAW,IPPROTO_UDP);
if(sockfd<0)
{
printf("socket_in call failed\n");
exit(1);
}
while(1)
{
memset(RecvBuf,0,sizeof(RecvBuf));
len = recvfrom(sockfd,RecvBuf,sizeof(RecvBuf),0,(struct sockaddr *)&addr,&(sizeof(addr)));
printf(" receive length: %d\n",len);
}
close(sockfd);
}
代码大概是这样的,我收不到数据,把本机的ip地址改成ip包里的目的ip地址就可以收到了,请问有什么问题吗?