听原始套接字

时间:2014-03-28 07:50:31

标签: c linux sockets interface raw-sockets

我正在监听原始套接字,但我仍然没有得到任何ping数据包。这是我的代码

FD_ZERO(&interface_readfds);

sockfd = socket(PF_PACKET, SOCK_RAW,htons(ETH_P_ALL));
setsockopt(sockfd, SOL_SOCKET,  SO_REUSEADDR,
                        (char *)&sockopt, sizeof(sockopt));

strcpy(ifName, "vet1");

setsockopt(sockfd, SOL_SOCKET,  SO_REUSEADDR,
                        (char *)&sockopt, sizeof(sockopt));

max_sd = sockfd;
FD_SET(sockfd, &interface_readfds);

while(1){
retVal = select(max_sd + 1, &interface_readfds, NULL, NULL,
         &timeout);
if(retVal == 1){
/// I want to come here
  }
}

这里我没有选择任何结果。它只是超时了。关于我做错什么的任何建议?

我在ve1上绑定,我在ve1p上执行ping操作

 ping -I ve1p 1.1.1.1

所以我应该在我的代码上收到一些东西。

0 个答案:

没有答案