资源简介
使用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源码,servlet+jsp),适
- java串口通信全套完整代码-导入eclip
- jsonarray所必需的6个jar包.rar
- 三角网构TIN生成算法,Java语言实现
- java代码编写将excel数据导入到mysql数据
- Java写的cmm词法分析器源代码及javacc学
- JAVA JSP公司财务管理系统 源代码 论文
- JSP+MYSQL旅行社管理信息系统
- 推荐算法的JAVA实现
- 基于Java的酒店管理系统源码(毕业设
- java-图片识别 图片比较
- android毕业设计
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
- Java 文件加密传输
- java做的房产管理系统
- 基于jsp的bbs论坛 非常详细
评论
共有 条评论