我想用winpcap编程实现“测试机器是否上网”这个功能,具体实现要Ping一个指定的IP。
我的问题是哪个IP是一直可以Ping的???比如Ping www.baidu.com可以查看机器是否上网,但我的程序中不能Ping域名,只能Ping IP,
故请教高手,互联网上哪个IP是一直可以Ping的?有没有这样的IP?知道的朋友回答一下,谢谢!!!

解决方案 »

  1.   

    没有哪个公网的IP是可以一直ping的
      

  2.   


    不是吧,晕死,那这样的话,我写的程序就没什么用了
    我是用pcap_sendpacket()某个一直在线的IP发个Ping包,看收不收得到回应,如果收到则表示本机在线。
    如果要去Ping域名,编程起来就很麻烦不过上面的问题我个人感觉还是有可能的,比如说CNNIC(中国互联网络信息中心)之类的会不会
    保留某个IP不变,作为它自己的服务器。有没有这种可能?
      

  3.   

    不能获取网上哪个可PING网站,再赋值给你的程序变量??
      

  4.   

    www.google.com或www.yahoo.com等都是一直都能PING的.
      

  5.   

    国内用Baidu,基本上都可以Ping通而且国内的速度快。
      

  6.   


    谢谢marine8086的提醒,问题已搞定
      

  7.   

    总结一下:
    1、pcap_findalldevs();  //查询本机的所有网络接口
    2、pcap_open_live(); //打开某个网络接口
    3、pcap_sendpacket(); //用该网络接口发一个Ping request包
    在这里要解决3个小问题:
    (1)本网络接口IP:用pcap_open_live()可以获得;
    (2)要Ping的目的IP:用gethostbyname("www.baidu.com")获得;
    (3)计算Ping request的IP校验和:用网上现成的函数checksum()。
    4、pcap_next_ex(); //在指定时间内查询是否收到Ping reply包
    如收到,表示该网络接口正在连接Internet。否则转到2。
      

  8.   

    补充一下:
    第3步要解决4个问题:
    还一个问题是:
    (4)目的MAC地址:可用GetAdaptersInfo()获得。发Ping request包时,源MAC地址可填入0x00,0x00,0x00,0x00,0x00,0x00。