问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

请问怎样用java发送ICMP包,实现ping,测量两个主机之间的延时

发布网友 发布时间:2022-05-27 16:52

我来回答

1个回答

热心网友 时间:2023-11-05 04:28

网上搜的
三、ICMP Ping in Java(JDK 1.5 and above)
Programatically using ICMP Ping is a great way to establish that a server is up and running. Previously you couldn't do ICMP ping (what ping command does in Linux/Unix & Windows) in java without using JNI or exec calls. Here is a simple and reliable method to do ICMP pings in Java without using JNI or NIO.

String host = "172.16.0.2"
int timeOut = 3000; // I recommend 3 seconds at least
boolean status = InetAddress.getByName(host).isReachable(timeOut)

status is true if the machine is reachable by ping; false otherwise. Best effort is made to try to reach the host, but firewalls and server configuration may block requests resulting in a unreachable status while some specific ports may be accessible. A typical implementation will use ICMP ECHO REQUESTs if the privilege can be obtained, otherwise it will try to establish a TCP connection on port 7 (Echo) of the destination host.
In Linux/Unix you may have to suid the java executable to get ICMP Ping working, ECHO REQUESTs will be fine even without suid. However on Windows you can get ICMP Ping without any issues whatsoever.
四、最简单的办法,直接调用CMD
try
{
Runtime.getRuntime().exec("cmd /c start ping 127.0.0.1");
}
catch (Exception ex)
{
System.out.println(ex.getMessage());
}
ping的过程可以显示在本地的办法
import java.io.*;
public class Ping
{
public static void main(String args[])
{
String line = null;
try
{
Process pro = Runtime.getRuntime().exec("ping 127.0.0.1 ");
BufferedReader buf = new BufferedReader(new InputStreamReader(pro.getInputStream()));
while ((line = buf.readLine()) != null)
System.out.println(line);
}
catch (Exception ex)
{
System.out.println(ex.getMessage());
}
}
}
五、模拟PING
利用InetAddress的isReachable方法可以实现ping的功能,里面参数设定超时时间,返回结果表示是否连上
try {
InetAddress address = InetAddress.getByName("192.168.0.113");
System.out.println(address.isReachable(5000));
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

参考资料:http://blog.sina.com.cn/s/blog_4b00fd1b0100by7z.html

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
K790支持什么样的格式 并且需要注意存储的时候需要注意什么 索爱K790怎么区分行水货 怎么看知道是不是翻新的 索爱z550的上网的设置~~请高手教设置! 索尼爱立信 【无网络访问权限】 K790手机上网 CMWAP 请告诉我索爱K790怎么设置上网参数? 怎样才能清除QQ游戏里面玩的记录 襄阳公积金贷款得多久 襄阳公积金贷款多久 襄阳公积金贷款多久 襄阳公积金贷款办理时间限制是多久? 新手开淘宝店进什么货好卖呢 ? 有谁知道怎样使用java编写ping程序 java怎样实现ping的功能... 为什么一个月总是有那么几天心里特别堵的慌,老是莫名其妙的烦躁。 心情很郁闷,很堵的感觉,有什么解决方法吗? 用JAVA实现ping并给出详细解释 2012年12月18日零点59分出生的男孩,姓虞,想请老师结合八字帮忙取个有意义的名字,lao fa 心里堵的心烦意乱, 如何用Java实现Ping 莫名其妙的烦躁,心里堵的慌,堵的慌怎么办? 天天都感觉心里很堵很烦躁怎么办 用java实现ping的几种方式 姓虞,男孩,马年生的,求中间带三点水,或水字的名字,后面是成字, 2013年农历12月11中午11点55分生男孩姓虞缺木缺水想取个名字请大家帮忙 求说祝福语是用的bgm,我姐姐结婚我自己剪切了一个祝福语视频,想在里面放个bgm,求大神推荐 路由器上网线的那个灯没亮是怎么回事? 到湖北襄阳旅游,那里能看到完整的襄阳名胜景点录? 襄樊两日游襄樊旅游攻略 襄阳两日游 襄阳旅游功率 请推荐必吃必玩儿必住的! 电气设备长期过载会扩展成什么故障 电气设备发生的故障大多数是什么以及设备过载 澳柯玛电磁炉怎么样 澳柯玛电磁炉C-18T1出现E8表示什么 ps中字体输入文字的正常顺序是从从左往右但是我的ps是从右往左应该怎么调过来呀 JAVA语言能PING吗? 如何安装空调装饰板?? 澳柯玛洗衣机故障代码出现E1什么故障 Java中有没有类似于ping的方法 java 代码ping ip 1-都能ping通255 急求;java调用window的cmd的ping指令。。。 Java怎么用命令提示符窗口ping朋友电脑对话? 旧手机坏了想把里面的通讯录转到另一个手机上怎么转? 河北名广建筑工程有限公司怎么样? 压力表psi是什么意思 这个压力表数字代表什么意思?有能看懂的吗?空调压力表 有谁用过富士F47fd相机的?介绍下 房屋延期交付违约金怎么计算 房屋延期付款未交房违约金怎么算 哈利波特N开头名字 n开头的神的名字,西方神话里的 带X或者N的网名