显示dos命令ping和tracert等输出结果中的ip对应的地域名称

公司老大今天使用了dos命令ping,他想看到其中ip地址对应的地域名称。

如dos下命令ping www.qq.com的输出结果是:

正在 Ping www.qq.com [113.108.20.50] 具有 32 字节的数据:

正在 Ping www.qq.com [113.108.20.50] 具有 32 字节的数据:
来自 113.108.20.50 的回复: 字节=32 时间=3ms TTL=52
来自 113.108.20.50 的回复: 字节=32 时间=3ms TTL=52
来自 113.108.20.50 的回复: 字节=32 时间=2ms TTL=52
来自 113.108.20.50 的回复: 字节=32 时间=3ms TTL=52


113.108.20.50 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):

    最短 = 2ms,最长 = 3ms,平均 = 2ms


如果上面的输出结果中每个ip后面跟着相应的地域名称是不是更好点?

老大给了一个url  https://www.surfchen.org/nali,这位老兄使用了纯真ip数据库,给出了linux下的相应实现。

有了相应的参考,我们便可以实现windows下的相应实现了,详细步骤如下:

1 创建匿名管道,截获相应dos命令输出结果的每一行的字符串,如果输出为空,则退出,否则进行下面步骤;

2 提取出字符串中的ip地址,如果没有ip地址,直接跳到第5步;

3 调用纯真ip数据库的相关接口获取相应的地域名称;

4 把地域名称字符串插入到原字符串的后面,形成新字符串,输出;

5回到第一步。

上面的关键在于创建匿名管道,然后截取字符串中的ip地址。

我使用了VC2010创建了相关工程,如果要在Debug模式下进行调试,注意把数据库QQWry.Dat复制到工程的Debug目录下面。

发布的时候,把程序tr.exe和QQWry.Dat放在一个目录下发布,其使用格式是tr dos command 或 tr.exe dos command,如tr ping www.qq.com,其结果如下:

正在 Ping www.qq.com [113.108.20.50  广东省深圳市 电信] 具有 32 字节的数据:
来自 113.108.20.50  广东省深圳市 电信 的回复: 字节=32 时间=3ms TTL=52
来自 113.108.20.50  广东省深圳市 电信 的回复: 字节=32 时间=3ms TTL=52
来自 113.108.20.50  广东省深圳市 电信 的回复: 字节=32 时间=3ms TTL=52
来自 113.108.20.50  广东省深圳市 电信 的回复: 字节=32 时间=3ms TTL=52

如果要输出命令tracert的结果相关地域名称,使用命令就是tr tracert www.qq.com 或 tr.exe tracert www.qq.com。

具体源码在我的csdn资源站http://download.csdn.net/user/menggucaoyuan。

我的email是[email protected],欢迎索要程序或者报告bug。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章