小弟看的是微软的代码,如果ping一个不存在的ip,下面这句话怎么走不下去了 。
bread = recvfrom(sockRaw,recvbuf,MAX_PACKET,0,(struct sockaddr*)&from,
if (bread == SOCKET_ERROR)
{
if (WSAGetLastError() == WSAETIMEDOUT)
continue;
printf("Erro4\n");
return -1;
}
bread = recvfrom(sockRaw,recvbuf,MAX_PACKET,0,(struct sockaddr*)&from,
if (bread == SOCKET_ERROR)
{
if (WSAGetLastError() == WSAETIMEDOUT)
continue;
printf("Erro4\n");
return -1;
}
if(::setsockopt(cClient,SOL_SOCKET,SO_RCVTIMEO,(char *)&TimeOut,sizeof(TimeOut))==SOCKET_ERROR){
return 0;
}
因为我用自己的raw socket sniffer能够嗅探出ping
但是用raw socket发送的icmp,我的raw socket sniffer,
想必是微软的ping不是用raw socket,具体的技术可能是TDI的隐藏开发接口。