我想用winpcap编程实现“测试机器是否上网”这个功能,具体实现要Ping一个指定的IP。
我的问题是哪个IP是一直可以Ping的???比如Ping www.baidu.com可以查看机器是否上网,但我的程序中不能Ping域名,只能Ping IP,
故请教高手,互联网上哪个IP是一直可以Ping的?有没有这样的IP?知道的朋友回答一下,谢谢!!!
我的问题是哪个IP是一直可以Ping的???比如Ping www.baidu.com可以查看机器是否上网,但我的程序中不能Ping域名,只能Ping IP,
故请教高手,互联网上哪个IP是一直可以Ping的?有没有这样的IP?知道的朋友回答一下,谢谢!!!
解决方案 »
- VS2010无法添加button的消息事件
- 新人问:运用MYSQL的程序,怎么发布出去啊?
- 急!管道消息进行进程通信优化的问题!调用方进程死掉应该怎样处理?
- 请问如何获取打印的CDC!
- 2003年3月17日晚上10点多的时候怎么国内大部分网站都不能访问了????
- 如何在"static"或"button"中写入不断变化的字?
- 问谁自定义过DoDataExchange()
- !!!!!!100分请教大虾:怎么创建一个MFC扩展型的DLL(比如提供显示一个无模式的对话框的接口函数),让Delphi调用??????提供点代码再送100分!!
- 请教int16_t (*motion_val[2])[2] 这个声明是什么意思
- 用InstallShield制作VC的安装程序,怎样自动开始另一个已打包好的安装程序?
- 在IE里启用ActiveX文档服务器程序?
- MoveTo : is not a member of'CDC
不是吧,晕死,那这样的话,我写的程序就没什么用了
我是用pcap_sendpacket()某个一直在线的IP发个Ping包,看收不收得到回应,如果收到则表示本机在线。
如果要去Ping域名,编程起来就很麻烦不过上面的问题我个人感觉还是有可能的,比如说CNNIC(中国互联网络信息中心)之类的会不会
保留某个IP不变,作为它自己的服务器。有没有这种可能?
谢谢marine8086的提醒,问题已搞定
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。
第3步要解决4个问题:
还一个问题是:
(4)目的MAC地址:可用GetAdaptersInfo()获得。发Ping request包时,源MAC地址可填入0x00,0x00,0x00,0x00,0x00,0x00。