linux下如何抓取发给非本机的ip数据包

sf5382 2006-12-18 05:26:36
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地址就可以收到了,请问有什么问题吗?
...全文
312 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lurenfu 2006-12-22
  • 打赏
  • 举报
回复
要用ioctl设置网卡为混杂模式
wanghi 2006-12-20
  • 打赏
  • 举报
回复
用libpcap

这个比较好!
redbad2 2006-12-20
  • 打赏
  • 举报
回复
libpcap
简单,方便
playmud 2006-12-18
  • 打赏
  • 举报
回复
看我的blog
http://blog.chinaunix.net/u/1574/showart.php?id=148488

23,116

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧