本文为大家分享了模拟 Ping 操作的一个 Java 类, 具体内容如下
นำเข้า java.io.ioException; นำเข้า java.net.inetaddress; นำเข้า java.net.unknownhostexception; /** * สร้างโดย Qiuju * ในปี 2014/9/21 */คลาสสาธารณะ SimplePing ใช้งานได้ {วัตถุสุดท้ายส่วนตัว mendlock = new Object (); บูลีนส่วนตัว isend = false; int ส่วนตัวมาถึง count = 0; จำนวน int ส่วนตัว; การหมดเวลา INT ส่วนตัว ชื่อสตริงส่วนตัว; MendCount ส่วนตัว; สตริงส่วนตัว mip = null; mlossrate แบบลอยตัวส่วนตัว = 1f; private float mdelay = 0; Public SimplePing (ชื่อสตริง, จำนวน int, หมดเวลา int) {count = mendCount = นับ; หมดเวลา = หมดเวลา; ชื่อ = ชื่อ; สำหรับ (int i = 0; i <mendCount; i ++) {เธรดเธรด = เธรดใหม่ (นี่); thread.setdaemon (จริง); thread.start (); } if (! isend) {ลอง {ซิงโครไนซ์ (mendlock) {mendlock.wait (); }} catch (interruptedException e) {e.printStackTrace (); }}} โมฆะส่วนตัว setend (บูลีน isarrived, ล่าช้ายาว, string ip) {ซิงโครไนซ์ (mendlock) {count-; ถ้า (isarrived) {มาถึง ++; mdelay = (mdelay + ล่าช้า) / 2f; if (ip! = null) mip = ip; }} if (count == 0) setend (); } โมฆะส่วนตัว setend () {mlossrate = (mendcount - มาถึง) / mendcount; isend = true; ซิงโครไนซ์ (mendlock) {mendlock.notifyall (); }} @Override โมฆะสาธารณะเรียกใช้ () {long lay = 0; บูลีน isarrived = false; string ip = null; ลอง {Long StartTime = System.currentTimeMillis (); ที่อยู่ inetAddress = inetAddress.getByName (ชื่อ); isarrived = address.isreachable (หมดเวลา); delay = system.currentTimeMillis () - starttime; ip = address.getHostaddress (); } catch (unknownhostexception e) {e.printstacktrace (); } catch (ioexception e) {e.printstacktrace (); } catch (exception e) {e.printstacktrace (); } ในที่สุด {setend (isarrived, delay, ip); }} สตริงสาธารณะ getip () {return mip; } public float getLossrate () {return mlossrate; } public float getDelay () {return mdelay; } บูลีนสาธารณะ getIssucceed () {return มาถึง count> 0; -在类中使用的是:
Long StartTime = System.currentTimeMillis (); ที่อยู่ inetAddress = inetAddress.getByName (ชื่อ); isarrived = address.isreachable (หมดเวลา); delay = system.currentTimeMillis () - starttime; ip = address.getHostaddress ();
其中的: address.isreachable (หมดเวลา); 方法, 但是这个方法有一定局限性;当是 root 模式下会发送 icmp 进行 ping 操作, 这就比较真实了;但是如果是非 รูต模式下则是使用的ซ็อกเก็ต进行的模拟。进行的模拟。
之所以说是中间类, 也就是因为这个原因没有采用这个类。
以上就是本文的全部内容, 希望对大家的学习有所帮助。