• 大小: 343KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-06
  • 语言: Java
  • 标签: ICMP  PING  java  

资源简介

使用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

评论

共有 条评论