我正在监听原始套接字,但我仍然没有得到任何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
所以我应该在我的代码上收到一些东西。