자바(Java)
[Java] 자바 방화벽 체크
xemaker
2020. 5. 26. 11:34
방화벽이 열려있는지 안열려 있는지 체크 먼저하고 프로그램을 실행시키면 좋을것 같다.
안 그러면 .. 방화벽이 안 열려있다면 마냥 기다리다가.. 이유도 모른채 왜 안되지.. 할듯
그래서..
방화벽 오픈 체크를 먼저 하고 오픈되었을때는 프로그램을 실행하고 아님 닫혀있다는 메시지를 사용자에게 전송하여 방화벽을 열게끔 하는게 맞겠지..
그래서 방화벽 체크 소스를 한번 짜보면..
package test;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;
import java.net.UnknownHostException;
public class PortCheck {
boolean portCheck(String host, int port) throws IOException {
boolean rst=false;
Socket sc=null;
try {
SocketAddress endpoint = new InetSocketAddress(host,port);
sc=new Socket();
sc.connect(endpoint,3000);
rst=true;
}catch(Exception e) {
e.printStackTrace();
}finally {
if(sc!=null) {
sc.close();
}
}
return rst;
}
public static void main(String[] args) throws UnknownHostException, IOException {
String host="naver.com";
int port=80;
PortCheck pc=new PortCheck();
boolean isOk = pc.portCheck(host,port);
if(isOk) {
System.out.println("방화벽이 열려있습니다.");
}else {
System.out.println("방화벽이 닫혀있습니다.");
}
}
}
보통 Util 클래스에 가져다 놓고 쓸테니 static 한 방법으로 해보면
package test;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;
import java.net.UnknownHostException;
public class PortCheck {
public static boolean portCheck(String host, int port) throws IOException {
boolean rst=false;
Socket sc=null;
try {
SocketAddress endpoint = new InetSocketAddress(host,port);
sc=new Socket();
sc.connect(endpoint,3000);
rst=true;
}catch(Exception e) {
e.printStackTrace();
}finally {
if(sc!=null) {
sc.close();
}
}
return rst;
}
public static void main(String[] args) throws UnknownHostException, IOException {
String host="naver.com";
int port=80;
boolean isOk = PortCheck.portCheck(host,port);
if(isOk) {
System.out.println("방화벽이 열려있습니다.");
}else {
System.out.println("방화벽이 닫혀있습니다.");
}
}
}