资源简介
使用Java语言开发
基于ICMP协议
仿Windows系统的Ping程序
简单实现
使用了Jpcap
计算机网络课程设计的作业
代码片段和文件信息
package ping;
import java.io.IOException;
import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.UnknownHostException;
import java.util.Scanner;
import jpcap.JpcapCaptor;
import jpcap.JpcapSender;
import jpcap.NetworkInterface;
import jpcap.NetworkInterfaceAddress;
import jpcap.packet.EthernetPacket;
import jpcap.packet.ICMPPacket;
import jpcap.packet.IPPacket;
import jpcap.packet.Packet;
import util.Util;
public class Main {
public static void main(String[] args) {
NetworkInterface[] devices = JpcapCaptor.getDeviceList();
InetAddress ip = null;
String strip = ““;
if (args.length > 0) {
strip = args[0];
} else {
System.out.print(“请输入域名或者IP地址:“);
Scanner sc = new Scanner(System.in);
strip = sc.nextLine();
sc.close();
}
try {
ip = InetAddress.getByName(strip);
} catch (UnknownHostException e) {
System.out.println(“无法找到主机:“ + strip);
System.exit(0);
}
if (args.length >= 3 && args[1].toLowerCase().equals(“-n“)) {
try {
int times = Integer.parseInt(args[2]);
ping(devices[0] ip times);
} catch (NumberFormatException e) {
ping(devices[0] ip 4);
}
} else {
ping(devices[0] ip 4);
}
}
public static void ping(NetworkInterface device InetAddress dstIP int times) {
InetAddress srcIP = null;
for (NetworkInterfaceAddress addr : device.addresses) {
if (addr.address instanceof Inet4Address) {
srcIP = addr.address;
break;
}
}
int timeout = 1000;
JpcapCaptor captor = null;
try {
captor = JpcapCaptor.openDevice(device 2000 false timeout);
} catch (IOException e) {
e.printStackTrace();
}
byte[] defaultGatewayMacAddress = null;
InetAddress baiduIP = null;
try {
baiduIP = InetAddress.getByName(“www.baidu.com“);
} catch (UnknownHostException e1) {
e1.printStackTrace();
}
while (true) {
try {
new URL(“http://www.baidu.com“).openStream().close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Packet p = captor.getPacket();
if (p == null) {
continue;
}
IPPacket packet = (IPPacket) p;
if (packet == null) {
System.out.println(“[调试信息]获取默认网关MAC地址失败,正在重试。。。“);
} else {
if (packet.dst_ip.getHostAddress().equals(baiduIP.getHostAddress())) {
defaultGatewayMacAddress = ((EthernetPacket) packet.datalink).dst_mac;
break;
}
}
}
System.out.println(“[调试信息]默认网关的MAC地址:“ + Util.bytes2MacAddress(defaultGatewayMacAddress));
System.out.println();
System.out.println();
try {
captor.setFilter(“icmp and src host “ + dstIP.getHostAddress() true);
} catch (IOException e) {
}
byte[] data = “abcdefghijklmnopqrstuvwxyz123456“.getBytes();
JpcapSender sender = captor.getJpcapSenderInstance();
short seq = 1;
System.out.println(String.format(“正在 Ping %s 具有 %d 字节的数据:“ dstIP.getHostAddress() data.length));
in
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-07-24 12:25 java_icmp_ping-master\
目录 0 2018-07-24 12:25 java_icmp_ping-master\Jpcap\
目录 0 2018-07-24 12:25 java_icmp_ping-master\Jpcap\Jpcap-0.7-32bit\
文件 81920 2018-07-24 12:25 java_icmp_ping-master\Jpcap\Jpcap-0.7-32bit\Jpcap.dll
文件 27288 2018-07-24 12:25 java_icmp_ping-master\Jpcap\Jpcap-0.7-32bit\jpcap.jar
目录 0 2018-07-24 12:25 java_icmp_ping-master\Jpcap\Jpcap-64bit\
文件 89600 2018-07-24 12:25 java_icmp_ping-master\Jpcap\Jpcap-64bit\Jpcap.dll
文件 18192 2018-07-24 12:25 java_icmp_ping-master\Jpcap\Jpcap-64bit\jpcap.jar
文件 400 2018-07-24 12:25 java_icmp_ping-master\README.md
目录 0 2018-07-24 12:25 java_icmp_ping-master\libs\
文件 18192 2018-07-24 12:25 java_icmp_ping-master\libs\jpcap.jar
文件 214790 2018-07-24 12:25 java_icmp_ping-master\screenshot.jpg
目录 0 2018-07-24 12:25 java_icmp_ping-master\src\
目录 0 2018-07-24 12:25 java_icmp_ping-master\src\ping\
文件 5425 2018-07-24 12:25 java_icmp_ping-master\src\ping\Main.java
文件 5762 2018-07-24 12:25 java_icmp_ping-master\src\ping\Main2.java
目录 0 2018-07-24 12:25 java_icmp_ping-master\src\util\
文件 1333 2018-07-24 12:25 java_icmp_ping-master\src\util\Util.java
文件 1687 2018-07-24 12:25 java_icmp_ping-master\src\util\Util2.java
- 上一篇:短信信息实时获取
- 下一篇:justtrustme2019.apk
相关资源
- 企业人事管理系统(java ee)
- Java版火车查票系统
- 1078解析推流源代码(netty+javacv+sprin
- webUploader断点续传js+java代码及说明
- java、android、web三端通用的RSA和AES工具
- Java远程控制服务端和客户端源代码
- 医院管理系统源码 数据库课程设计
- 剑指offer(java) pdf 高清完整版
- java读取zip文件
- 车站售票系统
- 猜数字 JAVA课程设计报告
- 元胞自动机 Java实现
- java版本的人员信息管理.rar
- java swing 闹钟源码
- java实现国密SM3算法
- java 泡泡堂联机版
- java课程设计赛车项目
-
msba
se.jar - 打地鼠小游戏 java课程设计
- 加密解密字符串工具含源码,可双击
- java在线答题系统
- 阅览室读书问题:
- 方立勋30天Javaweb视频
- 运用jsp实现的购物车模块
- JAVa程序拼图源代码
- JAVA课程设计--计算器(含文档等
- 2017达内Java视频全套,ts高清文件
- Hill加密算法Java实现,带图形化界面
- ZXing-core-3.3.0.jar
- java龟兔赛跑小程序
评论
共有 条评论