java实现ping功能的几种方法

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.csdn.net/qq_29663071/article/details/50563275
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Java实现ping功能,可以使用JavaSocket类来实现。通过创建一个Socket对象,可以向目标主机发送ICMP Echo请求,并等待接收响应。以下是一个简单的示例代码: ```java import java.io.IOException; import java.net.InetAddress; import java.net.Socket; public class PingExample { public static void main(String[] args) { String host = "目标主机IP地址"; int timeout = 3000; // 设置超时时间,单位为毫秒 try { InetAddress address = InetAddress.getByName(host); boolean reachable = address.isReachable(timeout); if (reachable) { System.out.println("Ping成功"); } else { System.out.println("Ping失败"); } } catch (IOException e) { System.out.println("Ping失败"); } } } ``` 在上述代码中,我们使用`InetAddress.getByName()`方法获取目标主机的InetAddress对象,然后使用`isReachable()`方法进行ping操作。如果返回值为true,表示ping成功;如果返回值为false,表示ping失败。我们可以根据这个结果输出相应的提示信息。注意,这里需要注意设置超时时间,以免长时间等待。 参考资料: 此项目是spring boot thymeleaf maven的Java实现ping命令的功能以及端口检测是否开放的功能。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [java实现ping功能几种方法](https://blog.csdn.net/qq_29663071/article/details/50563275)[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_2"}}] [.reference_item style="max-width: 50%"] - *2* [Java实现ping功能](https://download.csdn.net/download/malimingwq/10529547)[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_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值