1. Tracert(跟踪路由)用于确定 IP数据包访问目标所采取的路径。

Tracert 命令使用用 IP 生存时间  (TTL) 字段和 ICMP错误消息来确定从一个Host到网络上其他主机的Router

tracert命令能够显示你的数据包在网络上进行传输时经历的一个个大大小小的ISP的路由器。

2. PING(Packet Internet Groper),即因特网包探索器。可以用来测试网络连接量。ping命令是基于ICMP(Internet Control Messages Protocol)即因特网信报控制协议的一个应用程序;通常情况下是能够收到对方的ICMP echo的。ping 命令利用网络上机器IP地址的唯一性,给目标IP地址发送数个数据包,再要求对方返回一个同样大小的数据包来确定两台网络主机是否联通,在此过程中也能够确定时延是多少。

下面是主要实现代码:

package com.buu;

import java.net.InetAddress;

import java.net.MalformedURLException;

import java.net.URL;

import java.net.UnknownHostException;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.util.Scanner;

public class CommandUtil {

String tracert = "tracert -h 10 "; //模拟tracert命令

String ping = "ping";//模拟 ping 命令

String routePrint = "route print -4";//模拟route print命令

注意:这边我是用while循环主要实现tracert以及ping命令要是读者需要

完全重写dos命令行模式则需要使用多线程并采用同步原理,虽然工程量大

但是实现原理并不难,读者可自行尝试。

public static void main(String args[]){

String input = null;

@SuppressWarnings("resource")

Scanner scanner = new Scanner(System.in);

//利用while循环接收输入的命令行参数

while(true){

System.out.println("Please input destination server IP address :\n");

input = scanner.next();

CommandUtil host = new CommandUtil();

host.tracert = host.tracert + " " + input;

host.ping = host.ping + " " + input;

try {

host.command(host.routePrint);

} catch (IOException exception) {

exception.printStackTrace();

}

try {

host.command(host.tracert) ;

} catch (IOException exception) {

exception.printStackTrace();

}

try {

host.command(host.ping);

} catch (IOException exception) {

exception.printStackTrace();

}

InetAddress ipAddress;

try {

ipAddress = InetAddress.getByName(input);

System.out.println("IP address : "+ipAddress);

} catch (UnknownHostException exception) {

exception.printStackTrace();

}

URL url;

try {

url = new URL("http",input,80,"index.html");

System.out.println();//输出服务器地址

System.out.println("Get the Server-Name# : "+url.getHost());

System.out.println();//输出首页文件

System.out.println("Get the default file# : "+url.getFile());

System.out.println();//输出首页协议和端口

System.out.println("Get the protocol# : "+url.getProtocol()+" "+url.getPort());

System.out.println();

} catch (MalformedURLException e) {

e.printStackTrace();

}

System.out.println();

try {

System.out.println("Get serverName & IPAddress:"+InetAddress.getByName(input));

} catch (UnknownHostException e) {

e.printStackTrace();

}

long freeMemory = Runtime.getRuntime().freeMemory();

System.out.println("Surplus memory of JVM: "+freeMemory+"B");

}

}

//模拟 tracert 命令

注意这边将跃点数定为10个,也可以不在内部定义,而在命令输入时确定

为了方便起见,直接将ping命令和tracert命令封装在一起,

这样子做的好处就是既能够显示每一个数据报经过的路由,也能显示是否到达以及耗时

可以在ping命令中自己设置TTL值以及要发送的数据包的数量,读者自己选择即可

StringBuffer commandResult = null;

private void command(String tracerCommand) throws IOException{

//第一步:创建进程(是接口不必初始化)

//1.通过Runtime类的getRuntime().exec()传入需要运行的命令参数

System.out.println();

System.out.println(InetAddress.getByName("localhost")+" is tracking the destination server...");

Process process = Runtime.getRuntime().exec(tracerCommand);

readResult(process.getInputStream());

process.destroy();

}

//第二步:通过输入流来将命令执行结果输出到控制台

private void readResult(InputStream inputStream) throws IOException{

commandResult = new StringBuffer();  //初始化命令行

String commandInfo = null; //定义用于接收命令行执行结果的字符串

BufferedReader bufferedReader =

new BufferedReader(new InputStreamReader(inputStream));

while ( (commandInfo = bufferedReader.readLine()) != null)  {

System.out.println(commandInfo);

}

bufferedReader.close();

}

}

//以下是运行结果:

/*

Please input destination server IP address :

www.sina.com

localhost/127.0.0.1 is tracking the destination server...

===========================================================================

接口列表

17...50 b7 c3 ea 61 71 ......Qualcomm Atheros AR9485WB-EG Wireless Network Adapter

14...20 89 84 17 3e 21 ......Realtek PCIe GBE Family Controller

13...50 b7 c3 ea 61 72 ......Bluetooth 设备(个人区域网)

1...........................Software Loopback Interface 1

25...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter #2

24...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter #4

23...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter #5

21...00 00 00 00 00 00 00 e0 Teredo Tunneling Pseudo-Interface

===========================================================================

IPv4 路由表

===========================================================================

活动路由:

网络目标        网络掩码          网关       接口   跃点数

0.0.0.0          0.0.0.0     10.12.31.254      10.12.20.73     25

10.12.0.0    255.255.224.0            在链路上       10.12.20.73    281

10.12.20.73  255.255.255.255            在链路上       10.12.20.73    281

10.12.31.255  255.255.255.255            在链路上       10.12.20.73    281

127.0.0.0        255.0.0.0            在链路上         127.0.0.1    306

127.0.0.1  255.255.255.255            在链路上         127.0.0.1    306

127.255.255.255  255.255.255.255            在链路上         127.0.0.1    306

224.0.0.0        240.0.0.0            在链路上         127.0.0.1    306

224.0.0.0        240.0.0.0            在链路上       10.12.20.73    281

255.255.255.255  255.255.255.255            在链路上         127.0.0.1    306

255.255.255.255  255.255.255.255            在链路上       10.12.20.73    281

===========================================================================

永久路由:

localhost/127.0.0.1 is tracking the destination server...

通过最多 10 个跃点跟踪

到 cernetnews.sina.com.cn [121.194.0.239] 的路由:

1    13 ms    14 ms     2 ms  10.12.31.254

2     3 ms     7 ms     4 ms  10.11.7.33

3     4 ms     3 ms     2 ms  10.11.7.18

4    15 ms     6 ms     5 ms  202.112.5.133

5     9 ms    10 ms    22 ms  101.4.118.73

6    15 ms    13 ms    43 ms  202.112.38.166

7     3 ms     8 ms     4 ms  D3-CER-7609.IDC.EDU.CN [121.194.15.253]

8     *        *        *     请求超时。

9     5 ms    10 ms    14 ms  121.194.0.239

跟踪完成。

localhost/127.0.0.1 is tracking the destination server...

正在 Ping cernetnews.sina.com.cn [121.194.0.239] 具有 32 字节的数据:

来自 121.194.0.239 的回复: 字节=32 时间=21ms TTL=55

来自 121.194.0.239 的回复: 字节=32 时间=5ms TTL=55

来自 121.194.0.239 的回复: 字节=32 时间=11ms TTL=55

来自 121.194.0.239 的回复: 字节=32 时间=3ms TTL=55

121.194.0.239 的 Ping 统计信息:

数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),

往返行程的估计时间(以毫秒为单位):

最短 = 3ms,最长 = 21ms,平均 = 10ms

IP address : www.sina.com/121.194.0.239

Get the Server-Name# www.buu.edu.cn

Get the default file# index.html

Get the protocol# http 80

Get serverName & IPAddress:www.sina.com/121.194.0.239

Surplus memory of JVM: 54469248B

Please input destination server IP address :

*/

java tracert_Java模拟Tracert和ping命令实现跃点追踪相关推荐

  1. 华为eNSP实验-防火墙模拟配置(采用ping命令逐步分析)

    ensp防火墙模拟配置-采用ping命令逐步分析 1.各设备的IP地址配置. 按如图所示配置好各个设备对应的IP地址. 注意点: 1.图中cloud2云处需要关联电脑上对应的虚拟网卡. 2.实验中我使 ...

  2. java安装完不能ping,解决安装java jdk后导致的ping命令无法使用

    nef格式转换为jpg格式的方法打开电脑浏览器,搜索[在线nef转jpg]文字,并点击链接进入.在新的界面中,点击[在线nef转jpg]按钮.进入到首页后,点击[添加文件]选项.在弹出的 2021-0 ...

  3. 用Java模仿简单的Ping命令

    突然对Ping命令好奇,想用Java实现一下,所以简易的写了个模仿CMD里面Ping命令的程序,贴在下面. import java.io.IOException; import java.net.In ...

  4. Linux下ping命令、traceroute命令、tracert命令的使用

    Linux系统的ping命令是常用的网络命令,它通常用来测试与目标主机的连通性,我们经常会说"ping一下某机器,看是不是开着".不能打开网页时会说"你先ping网关地址 ...

  5. java linux ping ip,java linux ping命令

    java linux ping命令 [2021-02-03 14:27:06]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace(&qu ...

  6. 安卓java代码ping网关_Android代码中使用Ping命令

    项目中需要搜索同一WIFI局域网中的设备并进行通信,暂时想到的办法是得到局域网网段的地址,因为同一局域网中的IP地址前三位是相同的,而第四位的范围从0~250,所以对第四位进行遍历搜索,能ping通的 ...

  7. Java代码实现ping命令

    Java代码实现ping命令 ​ 在一个项目中,遇到了一个问题,需要查看某个IP是否能够ping通,这里就直接使用Java代码实现了,记录一下. ​ 先说一下实现的几个方法. Jdk1.5的InetA ...

  8. Java实现Ping命令

    在项目中需要判断目录服务器是否在线,需要用到ping命令,调研有两种方法: 使用Java API的InetAddress方式 使用Runtime.exec调用操作系统的命令CMD 使用InetAddr ...

  9. java入参为方法_Java命令注入原理结合Java Instrument技术(FreeBuf首发)

    一.前言 命令注入:恶意用户构造恶意请求,对一些执行系统命令的功能点进行构造注入,从而达到执行命令的效果. 二.演示环境搭建 这里采用springboot+swagger搭建一个模拟的web环境:启动 ...

最新文章

  1. 数据结构之链表、栈和队列 java代码实现
  2. CUDA学习-计算实际线程ID
  3. linux iscsi
  4. python可以提高程序执行速度N倍你知道吗?
  5. gRPC学习记录(一)--概念性知识
  6. J2EE dynamic web工程搭建 struts2
  7. 获取进程或线程的ID以及句柄信息
  8. mysql查询索引相关信息查询
  9. bootstrap-table前端修改后台传来的数据重新进行渲染
  10. 清空div中的内容而不刷新整个页面_Vue中的$nextTick机制
  11. 多少个没收到会收敛_人体每天摄入多少脂肪,才会有益于健康?这3个常识,你了解吗...
  12. 我的世界java骷髅马_我的世界:稀有坐骑“骷髅马”的10种获取途径,真的只能靠运气?...
  13. 英特尔oneAPI—开发生物序列聚类工具
  14. matlab 求留数,基于MATLAB的留数计算方法的探讨
  15. 开学至此时总结。(月末总结好像一直没写)
  16. Windows XP SP3截至2011年4月更新补丁汇总(WinXP补丁包) 修正版
  17. 高翔视觉SLAM十四讲课本代码运行
  18. 从哪里租vps远程桌面服务器,vps远程桌面服务器租一个
  19. MWC 2018火热开幕,AI取代手机成主角,华为超越苹果称霸!
  20. 隆云通土壤ORP传感器

热门文章

  1. ubuntu更换阿里镜像源
  2. 【揭秘TCP/IP协议簇】——TCP/IP的三次握手建立连接
  3. PHP怎么做成Qq空间相册,qq空间如何上传本地视频 相片制作视频传到QQ空间
  4. 小T电视直播服务器无响应,【沙发管家】看电视直播点播不卡顿的最新解决办法!...
  5. 【干货】解密监控宝Docker监控实现原理
  6. MySQL 字符集 注意事项
  7. 第11节 Kali Linux系统网络信息查看与配置
  8. Maven插件wagon-maven-plugin自动化部署
  9. 初学者学习vue路由与无痕浏览
  10. 中国KAB创业教育网_需求分析说明书