Java--->判断IP和端口是否可连接

当我们通过IP和端口连接设备时,有时候为了用户体验,我们急需在几秒内给到用户回复信息,而这些就需要一些方法来判断:

public void connect(String server, int servPort) throws IOException,UnknownHostException, SocketTimeoutException {

        InetAddress ad = InetAddress.getByName(server);
        boolean state = ad.isReachable(1000);//测试是否可以达到该地址 ,判断ip是否可以连接 1000是超时时间
        if(state){
           System.out.println("连接成功" + ad.getHostAddress());
        } else{
           System.out.println("连接失败");

           throw new IOException();
        }
        //1.创建一个Socket实例:构造函数向指定的远程主机和端口建立一个TCP连接
       // socket = new Socket(server, servPort);
        socket = new Socket();
        socket.setReceiveBufferSize(8192);
        socket.setSoTimeout(1000);// socket.setSoTimeout(2000);
        SocketAddress address = new InetSocketAddress(server, servPort);
        try {
            socket.connect(address,1000);//1.判断ip、端口是否可连接
        } catch (IOException e) {
            System.out.println("新建一个 socket server "+ servPort+"连接失败");
            throw new IOException();
        }
        System.out.println("新建一个socket");
        // System.out.println("Connected to server... sending echo string");
        //2. 通过套接字的输入输出流进行通信:一个Socket连接实例包括一个InputStream和一个OutputStream,它们的用法同于其他Java输入输出流。
        in = socket.getInputStream();
        out = socket.getOutputStream();
        isalreadyconnected=1;
        //  connect1( server,  servPort) ;
    }

通过上面两个方法,抛出异常,中断连接,来满足用户体验

时间: 2024-12-24 00:47:26

Java--->判断IP和端口是否可连接的相关文章

JAVA判断ip、端口是否可连接

1.判断ip.端口是否可连接 public static boolean isHostConnectable(String host, int port) { Socket socket = new Socket(); try { socket.connect(new InetSocketAddress(host, port)); } catch (IOException e) { e.printStackTrace(); return false; } finally { try { sock

JAVA 判断Socket 远程端是否断开连接

最近在做项目的时候,遇到这样一个问题,如何判断 Socket 远程端连接是否关闭,如果关闭的话,就要重建连接Socket的类提供了一些已经封装好的方法, 如  isClosed().isConnected().isInputStreamShutdown().isOutputStreamShutdown()等,在测试时发现,这些方法都是本地端的状态,无法判断远端是否已经断开连接. 其实在socket类中有一个方法sendUrgentData,它会往输出流发送一个字节的数据,只要对方Socket的S

java判断 ip 地址是否正确的正则表达式

java正则表达式判断 ip 地址是否正确 public class ClassWork05 { public static void main(String[] args) { System.out.println(IsIp.isIp("10.10.1.1")); } } class IsIp{ public static boolean isIp(String ip) { boolean b1 = ip.matches("([1-9]|[1-9]\\d|1\\d{2}|2

用nc检查某IP特定端口是否开放连接

nc检测端口的用法 nc -z  -w 10  %IP%    %PORT% -z表示检测或者扫描端口-w表示超时时间-u表示使用UDP协议 比如: nc -z -w 5 10.16.10.52 9901 尝试连接10.16.10.52的9901端口,超时时间位5秒.

MySQL 连接中 IP 或端口错误导致连接超时的解决方案

在 Visual Studio 中调用 mysql_real_connect() 函数连接 MySQL 过程中,当仅有连接 IP 错误时,会存在大概 20 秒的连接超时,最后连接失败:当有连接端口错误时,会存在大概 60 秒连接超时,最后连接失败. 通过在 mysql_real_connect() 前配置以下函数: mysql_options(handle, MYSQL_OPT_CONNECT_TIMEOUT, timeOut) 但并不能成功在超时时间之后,结束连接请求. 这里提供一种线程解决方

java 判断ip地址是否正确

每个ip数值为0-225 否则输出false,正确返回true 例如:输入: 000.12.12.034 121.234.12.12 23.45.12.56 00.12.123.123123.123 122.23 Hello.IP 输出为: true true true false false false import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.Scanner; class

Java 判断IP地址为内网IP还是公网IP

tcp/ip协议中,专门保留了三个IP地址区域作为私有地址,其地址范围如下: 10.0.0.0/8:10.0.0.0-10.255.255.255 172.16.0.0/12:172.16.0.0-172.31.255.255 192.168.0.0/16:192.168.0.0-192.168.255.255 那么,直接上代码吧: public static boolean internalIp(String ip) { byte[] addr = IPAddressUtil.textToNu

java-检查IP和端口在超时时间内是否可以连接

检查IP和端口在超时时间内是否可以连接 /** * 检查IP和端口是否可以连接 * @param ip * @param port * @return */ private static boolean testConnect(String ip,int port) { Boolean isConnect = false; Socket connect = new Socket(); try { InetSocketAddress inetSocketAddress = new InetSock

在java中获取URL的域名或IP与端口

在java中获取URL的域名或IP与端口 获取IP与域名方法一,使用正则表达式 public static String getIP(String url) { //使用正则表达式过滤, String re = "((http|ftp|https)://)(([a-zA-Z0-9._-]+)|([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}))(([a-zA-Z]{2,6})|(:[0-9]{1,4})?)"; String str = &quo