java实现ping功能的几种方法

本文介绍使用Java语言实现模拟Ping和Telnet功能的方法。通过Socket API和InetAddress类完成网络可达性和端口开放状态的检测。此外,还介绍了如何通过调用操作系统命令来实现Ping功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.nio.charset.Charset;

public class PingTest {
	public static void main(String[] args) {
		PingTest.cmd("www.baidu.com",8080,5000);
	}
	/**
	 * 1.模拟TELNET
	 * 利用Socket的connect(SocketAddress endpoint, inttimeout)方法可以实现telnet的功能,如果catch到异常说明telnet失败
	 * @param ip 地址
	 * @param port 端口
	 * @param timeOut 超时时间
	 */
	static void socketTest(String ip,int port,int timeOut){
		try  {
			Socket server = new Socket();
			InetSocketAddress address = new InetSocketAddress(ip,port);
			server.connect(address, timeOut);
			System.out.println(server.isConnected());
			server.close();
	    } catch (UnknownHostException e){
	        System.out.println("telnet失败");
	    } catch (IOException e){
	        System.out.println("telnet失败");
	    }
	}
	/**
	 * 2.模拟PING
	 * 利用InetAddress的isReachable方法可以实现ping的功能,里面参数设定超时时间,返回结果表示是否连上
	 * @param ip 地址
	 * @param port 端口
	 * @param timeOut 超时时间
	 */
	static void isReachableTest(String ip,int port,int timeOut){
		try {
            InetAddress address = InetAddress.getByName(ip);
            System.out.println(address.isReachable(timeOut));//true:连接成功,false:连接失败
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
	}
	/**
	 * 3.JAVA调用外部EXE实现PING功能
	 * ping的过程可以显示在本地
	 * @param ip 地址
	 * @param port 端口
	 * @param timeOut 超时时间
	 */
	static void execCmd(String ip,int port,int timeOut) {
		try {  
		    String adress = "ping " + ip;
	        Process p = Runtime.getRuntime().exec("cmd /c " + adress);
	        InputStreamReader inputStreamReader = new InputStreamReader(p.getInputStream(), Charset.forName("GBK"));  
	        BufferedReader br = new BufferedReader(inputStreamReader);    
	        String line=null;    
	        while((line = br.readLine()) != null){    
	        	System.out.println(line);   
	        }    
        } catch (IOException e) {    
	        e.printStackTrace();   
	        System.out.println("执行失败!"); 
        }  
	}
	/**
	 * 4.JAVA调用外部EXE实现PING功能
	 * ping的过程可以显示在本地
	 * @param ip 地址
	 * @param port 端口
	 * @param timeOut 超时时间
	 */
	static void cmd(String ip,int port,int timeOut) {
		try{
	        Runtime.getRuntime().exec("cmd /c start ping "+ip);
        }catch (Exception ex){
            System.out.println(ex.getMessage());
        }
	}
}
参考地址:http://blog.youkuaiyun.com/qq_29663071/article/details/50563275
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值