Hyun Chul's Utopia

특정 문자열이 IP Address 인지 확인하기. 본문

프로그래밍/JAVA

특정 문자열이 IP Address 인지 확인하기.

디프시다루핀 2011. 9. 14. 03:30


  기본적으로 IPv4에 맞게 구성되어 있으며, 중간에 적힌 정규형 표현은 구글링을 참고 하였음을 미리 밝힙니다.

  이번에 코딩을 하던 도중 입력한 문자열이 IP Address 인지 아니면 그냥 문자열인지 판별하는 그런 기능이 필요했습니다.  구글링 검색 결과 나온 내용은 단순히 4자리 숫자에 대한 판별 (ex : 255.255.255.0)에 관한 판별만 가능하더군요..

  입력하는 경우가 Port를 포함한 경우 (ex : 192.168.0.1:9000)에 대한 처리는 없었기에.. 해당 부분을 추가하여 개조 시켰습니다.


○ IpAddressAndPortCheck.java


 
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class IpAddressAndPortCheck {
	private Pattern pattern;
	private Matcher matcher;
	
	private String IpAddress;
	private int Port;
	
	private boolean bIP;

	private static final String IPADDRESS_PATTERN = 
			"^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
					"([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
					"([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
					"([01]?\\d\\d?|2[0-4]\\d|25[0-5])$";

	public IpAddressAndPortCheck(String IpAndPort){
		pattern = Pattern.compile(IPADDRESS_PATTERN);
		
		IpAddress = null;
		Port = -1;
		
		bIP = false;
		bIP = InputStringProcess(IpAndPort);
	}

	private boolean InputStringProcess(final String ip){
		int semicol = 0;
		
		for(int i = 0; i < ip.length(); i++) {
			if(ip.charAt(i) == ':') {
				semicol++;
			}
		}
		
		if(semicol == 0) {
			matcher = pattern.matcher(ip);
			if(matcher.matches()) {
				IpAddress = ip.substring(0, ip.length());
			}
			return matcher.matches();
		}
		else if(semicol == 1){
			int semiIndex = ip.lastIndexOf(":");
			
			String strPort = ip.substring(semiIndex + 1, ip.length());
			
			try {
				int nPort = Integer.parseInt(strPort);
				
				if(nPort > 0 && nPort <= 65535) {
					IpAddress = ip.substring(0, semiIndex);
					Port = nPort;
					return true;
				}
			} catch (Exception e) {
				System.out.println("Port is NOT Integer...");
				System.out.println(e.toString());
			}
			return false;
		}
		else {
			return false;
		}
	}
	
	public String getIPAddress() {
		if(bIP == true)
			return IpAddress;
		else
			return null;
	}
	
	public int getPort() {
		return Port;
	}
	
	public boolean isIp() {
		return bIP;
	}
	

}




첨부 파일은 센스..

 

'프로그래밍 > JAVA' 카테고리의 다른 글

Java에서 CIFS사용하기  (0) 2013.01.18
[Java] Byte를 Int 형으로 변환하기  (0) 2011.04.26
Comments