- 论坛徽章:
- 0
|
给出一个 netdump 程序, 抓包用的. 如果改进了,也希望贴出
不好意思,今天看到这个精华,有好多问题想问,还请各位大侠赐教。
最近我也编了一个截获网络数据包的程序,程序中有这样一段代码:
int sock;
...
...
if((sock=socket(AF_INET,SOCK_RAW,0))<0)
{
perror("can't created "
exit(0);
}
...
...
编译通过,执行的时候屏幕打印:can't created :Socket type not supported?
我把IPPROTO_IP换成IPPROTO_TCP 就不会报错
看到上面黄山松写的:sock = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL)),我想问下为什么要用AF_PACKET,是不是只有用它才能捕获到数据链路层的包,我的:sock=socket(AF_INET,SOCK_RAW,0)应该可以捕获得到IP层的所有包吧,但为什么会不支持呢?如果说我的内核不支持原始套接字可为什么换成IPPROTO_TCP 就可以了呢?
还有我看到lifeixiao的程序里也有sock = socket(AF_INET,SOCK_RAW,0),想问下你执行的时候没遇到我的这种情况吗?
PS:我的系统是redhat9.0,以root登陆。
怎么回事呀?
在此谢谢各位参与帖子讨论的朋友,这个问题困扰我很久了,现在终于看到黎明前的曙光了! |
|