Java 实现 telnet命令 验证主机端口的连通性


1、Telnet 命令

Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登录服务器。Telnet是常用的远程控制Web服务器的方法。

 

我们经常使用 telnet命令 测试主机端口的连通性(比如: 验证 www.baidu.com 80端口的连通性,如下状态说明80端口是通的)。

java telnet 执行命令 java连接telnet_服务器

 

 

2、Java 实现 telnet 主机端口

1)代码实现如下:

import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Socket;

/**
 * @author Miracle Luna
 * @version 1.0
 * @date 2019/12/16 16:11
 */
public class TelnetUtil {

    /**
     * 测试telnet 机器端口的连通性
     * @param hostname
     * @param port
     * @param timeout
     * @return
     */
    public static boolean telnet(String hostname, int port, int timeout){
        Socket socket = new Socket();
        boolean isConnected = false;
        try {
            socket.connect(new InetSocketAddress(hostname, port), timeout); // 建立连接
            isConnected = socket.isConnected(); // 通过现有方法查看连通状态
//            System.out.println(isConnected);    // true为连通
        } catch (IOException e) {
            System.out.println("false");        // 当连不通时,直接抛异常,异常捕获即可
        }finally{
            try {
                socket.close();   // 关闭连接
            } catch (IOException e) {
                System.out.println("false");
            }
        }
        return isConnected;
    }

    public static void main(String[] args) {
//        String hostname = "14.215.178.37";
        String hostname = "www.baidu.com";    // hostname 可以是主机的 IP 或者 域名
        int port = 80;
        int timeout = 200;
        boolean isConnected = telnet(hostname, port, timeout);
        System.out.println("telnet "+ hostname + " " + port + "\n==>isConnected: " + isConnected);
    }
}

 

2)运行结果如下:

telnet www.baidu.com 80
==>isConnected: true