国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

模擬Ping操作的一個Java類

2019-11-26 14:29:35
字體:
來源:轉載
供稿:網友

本文為大家分享了模擬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進行的模擬。
之所以說是中間類,也就是因為這個原因沒有采用這個類。

以上就是本文的全部內容,希望對大家的學習有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 鞍山市| 南阳市| 广平县| 新疆| 湖南省| 汨罗市| 芜湖县| 汽车| 泰兴市| 延边| 六枝特区| 南川市| 蒲城县| 白玉县| 博白县| 扬州市| 上高县| 湾仔区| 板桥市| 南雄市| 江川县| 布拖县| 屯昌县| 潜江市| 德保县| 新干县| 界首市| 右玉县| 琼中| 荃湾区| 南平市| 临西县| 仁化县| 扎赉特旗| 汉源县| 阳曲县| 宜川县| 迁西县| 克什克腾旗| 溆浦县| 郁南县|