• JavaFX校验IP和端口的合法性


                   我们人这一辈子不是别人的楷模,就是别人的借鉴。

                   今天项目添加了一些功能,主要实现网络的一些设置,如图:

                   

     主要有几个文本框和两个按钮,这两个按钮一个是查看   

       btnInternetCheck.setOnAction((ActionEvent event) -> {//查看
            int vcode = Datastruct.armmV * 100 * 100 + Datastruct.armsV * 100 + Datastruct.armdV;
            if(vcode>=8*10000+100+5){//版本大于8.1.5可以使用
               
                List<Integer> gi = prtl.rdGatewayIP();
                List<Integer> sm = prtl.rdSubMask();
                List<Integer> ia = prtl.rdIPAddr();
                List<Integer> sp = prtl.rdS0Port();
                List<Integer> pa = prtl.rdPhyAddr();
                tfGatewayIP.setText(""+gi.get(0) + "." + gi.get(1) + "." + gi.get(2) + "." + gi.get(3));
                tfSubnetMask.setText(""+sm.get(0) + "." + sm.get(1) + "." + sm.get(2) + "." + sm.get(3));
                tfLocalIP.setText(""+ia.get(0) + "." + ia.get(1) + "." + ia.get(2) + "." + ia.get(3));
                tfPortNumber.setText("" + (((sp.get(0)&0xff)<<8)+((sp.get(1))&0xff)));
                tfPhysicalLocation.setText(""+pa.get(0) + "." + pa.get(1) + "." + pa.get(2) + "." + pa.get(3) + "." + pa.get(4) + "." + pa.get(5));
             }
            });

    一个是修改

      btnInternetModify.setOnAction((ActionEvent event) -> {//修改
                boolean flag=false;
                String gatewayIP = tfGatewayIP.getText();
                String subnetMask = tfSubnetMask.getText();
                String localIP = tfLocalIP.getText();
                String portNumber = tfPortNumber.getText();
                String physicalLocation = tfPhysicalLocation.getText();
                if(isIp(gatewayIP)){//是IP地址
                      List<Integer> list=convertListByString(gatewayIP);//转换
                      prtl.setGateway_IP(list.get(0), list.get(1), list.get(2), list.get(3));//设值
                      flag=true;
                }else{//提示信息
                        showWaringDialog(null, strGatewayIPError, strInfoError, Global.strInfoOk);
                        flag=false;
                        return;
                }
                if(isIp(subnetMask)){//是IP地址
                      List<Integer> list=convertListByString(subnetMask);//转换
                      prtl.setSub_Mask(list.get(0), list.get(1), list.get(2), list.get(3));//设值
                       flag=true;
                }else{//提示信息
                        showWaringDialog(null, strSubnetMaskError, strInfoError, Global.strInfoOk);
                        flag=false;
                        return;
                }
                 if(isIp(localIP)){//是IP地址
                      List<Integer> list=convertListByString(localIP);//转换
                      prtl.setIP_Addr(list.get(0), list.get(1), list.get(2), list.get(3));//设值
                       flag=true;
                }else{//提示信息
                        showWaringDialog(null, strLocalIPError, strInfoError, Global.strInfoOk);
                        flag=false;
                        return;
                }
               
                if(isPort(portNumber)){
                    int port = getPort(portNumber);//获取修改后的端口
                    if(port>=1000&&port<=65535){
                        int portH = (port >> 8) & 0xff;  //高位
                        int portL = (port) & 0xff;  //低位
                        prtl.SetS0_Port(portH, portL);
                        flag = true;
                    }else{
                        showWaringDialog(null, strPortError, strInfoError, Global.strInfoOk);
                        flag = false;
                        return;
                    }
                 
                }else{
                    showWaringDialog(null, strPortError, strInfoError, Global.strInfoOk);
                    flag=false;
                    return;
                }
            
                if(isPhysicalLocation(physicalLocation)){//是物理地址
                      List<Integer> list=convertListByString(physicalLocation);//转换
                      prtl.setPhy_Addr(list.get(0), list.get(1), list.get(2), list.get(3),list.get(4),list.get(5));//设值
                      flag=true;
                }else{//提示信息
                       showWaringDialog(null, strPhyError, strInfoError, Global.strInfoOk);
                        flag=false;
                       return;
                }
                if(flag){
                     showMessageDialog(null, strModifySuccess, strInfoDone, Global.strInfoOk);
                }
             }); 
    }

    从上面代码我们可以看出主要有几个校验是否合格的方法isIP(String)、isPort(String)、isPhysicalLocation(String)和转换字符串(IP)成List集合的方法convertListByString(String),代码如下

      

     boolean isIp(String IP){//判断是否是一个IP  
            boolean b = false;  
            IP = trimSpaces(IP);  
            if(IP.matches("\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}")){  //不能让用户输入字母和符号,只能是数字
                String s[] = IP.split("\.");  
                if(Integer.parseInt(s[0])<=255)  
                    if(Integer.parseInt(s[1])<=255)  
                        if(Integer.parseInt(s[2])<=255)  
                            if(Integer.parseInt(s[3])<=255)  
                                b = true;  
            }
            return b;  
        }  
    boolean isPort(String port){//判断是否是端口并返回端口号
         boolean flag=false;
          port=trimSpaces(port);
          int p=5000;
          try {
              p=Integer.parseUnsignedInt(port);
              flag=true;
          } catch (Exception e) {
               flag=false;
          } 
        return flag;
      
      }
    boolean isPhysicalLocation(String pl){//判断是否是一个物理地址 
            boolean b = false;  
            pl = trimSpaces(pl);  
            if(pl.matches("\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}")){  //不能让用户输入字母和符号,只能是数字
                String s[] = pl.split("\.");  
                if(Integer.parseInt(s[0])<=255)  
                    if(Integer.parseInt(s[1])<=255)  
                        if(Integer.parseInt(s[2])<=255)  
                            if(Integer.parseInt(s[3])<=255)  
                                  if(Integer.parseInt(s[4])<=255)  
                                        if(Integer.parseInt(s[5])<=255)  
                                b = true;  
            }  
            return b;  
        }  
     List<Integer> convertListByString(String IPstr){//转换IP为4个数字存于List集合中
           
           String rx="\.";// '.' 是转义字符
           IPstr=trimSpaces(IPstr);
           String[] result=IPstr.split(rx);
           List<Integer> list=new ArrayList();
           for (int i = 0; i < result.length; i++) {
              list.add(Integer.parseInt(result[i]));
          }
            return list;
      }

    我么可以看出中间用到了trimSpaces(String)方法来去掉字符串前后的所有空格

    String trimSpaces(String IPstr){//去掉IP字符串前后所有的空格  
            String   IP=new String(IPstr);
            while(IP.startsWith(" ")){  
                   IP= IP.substring(1,IP.length()).trim();  
                }  
            while(IP.endsWith(" ")){  
                   IP= IP.substring(0,IP.length()-1).trim();  
                }  
            return IP;  
        }

    通过上述操作我们就可以实现校验IP和端口的合法性,下次见!

    
    
    

                 

                

                   

  • 相关阅读:
    struts2(2.0.x到2.1.2版本)的核心和工作原理(转)
    关于Struts2通配符无效的说明
    contOS 网络配置
    INFORMATICA 开发规范
    Python tricks(1) -- 动态定义一个新变量
    MySQL connector c++使用笔记
    python使用set来去重碰到TypeError: unhashable type
    Redis 资料整理
    Ruby 安装和gem配置
    爱读书的犹太人
  • 原文地址:https://www.cnblogs.com/wth1129/p/6831431.html
Copyright © 2020-2023  润新知