本文为大家分享了模拟 핑 操作的一个 操作的一个 Java 类, 具体内容如下
import java.io.ioexception; import java.net.inetaddress; import java.net.unknownhostexception; /** * 2014/9/21에 Qiuju *에 의해 만들어졌습니다. */public class simpleping emplements runnable {private final object mendlock = new Object (); 개인 부울 isend = 거짓; 개인 int 도착 = 0; 개인 int 수; 개인 int 타임 아웃; 개인 문자열 이름; 개인 int mendcount; 개인 문자열 mip = null; 개인 플로트 mlossrate = 1f; 개인 플로트 mdelay = 0; public simpleping (문자열 이름, int count, int timeout) {count = mendcount = count; 시간 초과 = 시간 초과; 이름 = 이름; for (int i = 0; i <mendcount; i ++) {스레드 스레드 = 새 스레드 (this); Thread.SetDaemon (true); thread.start (); } if (! isend) {try {synchronized (mendlock) {mendlock.wait (); }} catch (InterruptedException e) {e.printstacktrace (); }}} private void setend (boolean isarried, long delay, string ip) {synchronized (mendlock) {count-; if (isarried) {도착 ++; mdelay = (mdelay + 지연) / 2f; if (ip! = null) mip = ip; }} if (count == 0) setend (); } private void setend () {mlossrate = (mendcount -Ordectount) / mendcount; isend = true; 동기화 (mendlock) {mendlock.notifyall (); }} @override public void run () {long delay = 0; 부울 isarried = false; 문자열 ip = null; try {long starttime = system.currenttimeMillis (); inetAddress address = inetAddress.getByName (이름); isarried = address.isreachable (timeout); Delay = System.CurrentTimeMillis () - STARTTIME; ip = address.gethostaddress (); } catch (unknownHostException e) {e.printstacktrace (); } catch (ioexception e) {e.printstacktrace (); } catch (예외 e) {e.printstacktrace (); } 마침내 {설정 (ISARRIVED, DINER, IP); }} public string getip () {return mip; } public float getLossrate () {return mlossrate; } public float getDelay () {return mdelay; } public boolean getissucceed () {return count> 0; }}在类中使用的是 :
Long StartTime = System.CurrentTimeMillis (); inetAddress address = inetAddress.getByName (이름); isarried = address.isreachable (timeout); Delay = System.CurrentTimeMillis () - STARTTIME; ip = address.gethostaddress ();
其中的 : 주소는 리치 가능 (타임 아웃); 方法 方法, 但是这个方法有一定局限性;当是 root 模式下会发送 icmp 进行 ping 操作, 这就比较真实了;但是如果是非 루트 模式下则是使用的 소켓 进行的模拟。
之所以说是中间类, 也就是因为这个原因没有采用这个类。
以上就是本文的全部内容, 希望对大家的学习有所帮助。