java 模拟ping_java_模拟Ping操作的一个Java类,本文为大家分享了模拟Ping操作 - phpStudy...

模拟Ping操作的一个Java类

本文为大家分享了模拟Ping操作的一个Java类,具体内容如下

import java.io.IOException;

import java.net.InetAddress;

import java.net.UnknownHostException;

/**

* Created by QiuJU

* on 2014/9/21.

*/

public class SimplePing implements Runnable {

private final Object mEndLock = new Object();

private boolean IsEnd = false;

private int arrivedCount = 0;

private int Count;

private int TimeOut;

private String Name;

private int mEndCount;

private String mIp = null;

private float mLossRate = 1f;

private float mDelay = 0;

public SimplePing(String name, int count, int timeOut) {

Count = mEndCount = count;

TimeOut = timeOut;

Name = name;

for (int i = 0; i < mEndCount; i++) {

Thread thread = new Thread(this);

thread.setDaemon(true);

thread.start();

}

if (!IsEnd) {

try {

synchronized (mEndLock) {

mEndLock.wait();

}

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

private void setEnd(boolean isArrived, long delay, String ip) {

synchronized (mEndLock) {

Count--;

if (isArrived) {

arrivedCount++;

mDelay = (mDelay + delay) / 2f;

if (ip != null)

mIp = ip;

}

}

if (Count == 0)

setEnd();

}

private void setEnd() {

mLossRate = (mEndCount - arrivedCount) / mEndCount;

IsEnd = true;

synchronized (mEndLock) {

mEndLock.notifyAll();

}

}

@Override

public void run() {

long delay = 0;

boolean isArrived = false;

String ip = null;

try {

long startTime = System.currentTimeMillis();

InetAddress address = InetAddress.getByName(Name);

isArrived = address.isReachable(TimeOut);

delay = System.currentTimeMillis() - startTime;

ip = address.getHostAddress();

} catch (UnknownHostException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} catch (Exception e) {

e.printStackTrace();

} finally {

setEnd(isArrived, delay, ip);

}

}

public String getIp() {

return mIp;

}

public float getLossRate() {

return mLossRate;

}

public float getDelay() {

return mDelay;

}

public boolean getIsSucceed() {

return arrivedCount > 0;

}

}

在类中使用的是:

long startTime = System.currentTimeMillis();

InetAddress address = InetAddress.getByName(Name);

isArrived = address.isReachable(TimeOut);

delay = System.currentTimeMillis() - startTime;

ip = address.getHostAddress();

其中的:address.isReachable(TimeOut);方法,但是这个方法有一定局限性;当是Root模式下会发送ICMP进行Ping操作,这就比较真实了;但是如果是非Root模式下则是使用的Socket进行的模拟。

之所以说是中间类,也就是因为这个原因没有采用这个类。

以上就是本文的全部内容,希望对大家的学习有所帮助。相关阅读:

只要设备允许 盗版和XP用户也可免费升级win10

Android判断App前台运行还是后台运行(运行状态)

JS鼠标拖拽实例分析

JSP页面间传值问题实例简析

win10正式版cortana怎么用?Cortana设置及使用方法

浅谈PHP eval()函数定义和用法

关于crontab的使用详解

基于ThinkPHP实现批量删除

iOS中使用正则表达式NSRegularExpression 来验证textfiled输入的内容

AngularJS 服务详细讲解及示例代码

php获取访问者IP地址汇总

详解Android 手机卫士设置向导页面

js 判断上传文件大小及格式代码

PHP中使用glob函数实现一句话删除某个目录下的所有文件

引用和引用提供了关于在phpstudy中安装php扩展的指南。根据这些指南,你可以将php_yaf.dll文件放置在phpstudy的PHP路径下,在php.ini文件中手动添加extension=yaf的配置。具体来说,你可以将php_yaf.dll文件复制到D:\phpstudy_pro\Extensions\php\php7.3.4nts\ext路径下,并在php.ini文件中添加extension=yaf配置项。这样就可以在phpstudy的面板中启用yaf扩展了。引用则提供了一个可能导致问题的原因,即项目使用的php版本与cmd的版本不兼容。你可以通过检查项目使用的php版本是否与phpstudy中的版本一致来确认这一点。如果版本不一致,可以在phpstudy中切换php版本或者调整项目的php版本。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [阿里云服务下安装Composer时出现 错误:添加到用户路径:C:/phpStudy/Extensions/php/php7.3.4nts 安装无法...](https://blog.csdn.net/qq_42345116/article/details/122595160)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [php7.3.4可用yaf扩展下载phpstudy小皮面板php_yaf.dll(亲测100%可用)](https://download.csdn.net/download/lingyun820/16593737)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [执行php命令行出现 Failed loading D:\phpStudy\php\php7.3.4nts\ext\php_xdebug.dll](https://blog.csdn.net/weixin_42079053/article/details/105618234)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值