zoukankan      html  css  js  c++  java
  • 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) ;
        }

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

  • 相关阅读:
    BZOJ1036 [ZJOI2008]树的统计Count
    3224: Tyvj 1728 普通平衡树
    BZOJ 3343教主的魔法
    BZOJ 2002[Hnoi2010]Bounce 弹飞绵羊
    BZOJ1503 [NOI2004]郁闷的出纳员
    BZOJ1588 [HNOI2002]营业额统计
    带有上下界的网络流
    堆优化 dijkstra +路径输出
    luogu P3388 【模板】割点(割顶)
    Tarjan 算法求无向图的割顶和桥
  • 原文地址:https://www.cnblogs.com/wth1129/p/6846723.html
Copyright © 2011-2022 走看看