HAN1110 9899e780ba984d89824a90ee8deb7cb2
시작전 출처는 "쉽게 배우는 자바 프로그래밍" 입니다.
주의! 해당 강좌는 Java 의 기초문법(Scanner 와 if , while문) 을 할줄 아는사람을 기준으로 제작되였습니다.
안녕하세요! HAN1110 입니다!
오늘은 자바로 서버를 만들어보겠습니다.
그 전 기초로 , IP 주소를 얻어보겠습니다.
클래스를 만들어야겠죠?
전 IntelliJ Idea Community 를 사용하겠습니다.
기초 작업은 끝났네요! 이제 서버가 무엇인지 알아보겠습니다
서버는 쉽게 말해서 , 저희가 접속하는 이 한마포같은겁니다!
한마포 프리루트님 컴퓨터같은거죠.
저희는 클라이언트로 한마포에 접속해 IP 를 얻지 않고
네이버 IP 를 얻어보겠습니다.
어차피 님들 해킹 못하잖아요?
잘 응용 할겁니다.
패키지 만들고 ~
하위 패키지 만들고~
클래스 만들고~
다 끝났네요.
메인 메소드 만들어줍시다.
package net.koreaminecraft.IPAdd; public class IPAdded { public static void main(String[] args) { } }
참 쉽죠? 여기까지는 말이죠.
이제 어려워집니다.
package net.koreaminecraft.IPAdd; public class IPAdded { public static void main(String[] args) { InetAddress add1 = null, add2 = null; } }
InetAddress 는... InternetAddress의 줄임말이라고 생각하시면 됩니다!
IP 번호와 URL 을 조사할때 사용되죠.
어라? 에러가 나네요. 살펴봅시다.
당연히 오류가 날겁니다!
InetAddress 는 java.util 패키지에 있으니 말이죠.
당장 임포트해줍시다.
임포트해준 뒤엔
오류 없이 정상이네요!
이제 글자를 출력하고 도메인을 입력받아봅시다.
전 추가 라이브러리를 만들어서
package net.koreaminecraft.IPAdd; import java.net.InetAddress; import java.util.Scanner; import net.koreaminecraft.IPAdd.Library.Terminals; public class IPAdded extends Terminals { public static void main(String[] args) { InetAddress add1 = null, add2 = null; Terminal("호스트 이름을 입력하세요 : "); Scanner in = new Scanner(System.in); String url = in.nextLine(); } }
이 코드를 쓰겠습니다.
만약 여러분들이 인텔리제이에 라이브러리를 넣는법을 아신다면
이곳에 @HAN1110 을 붙여 멘션을 해주세요!
Scanner 은 건너뛰겠습니다.
그걸 모르면 안되니까요.
전 서버의 기초강좌를 하고있는거지 Java 자체의 기초강좌를 하는게 아닙니다. 그러니 이해해주세요
자. 이제 try 문이 사용될겁니다.
Try 문은 에러가 났을때 다른 실행문으로 넘겨주기 위한 실행문입니다.
100번 듣는거보다 1번 체험하는게 낫겠죠?
package net.koreaminecraft.IPAdd; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.Scanner; import net.koreaminecraft.IPAdd.Library.Terminals; public class IPAdded extends Terminals { public static void main(String[] args) { InetAddress addr1 = null, addr2 = null; Terminal("호스트 이름을 입력하세요 : "); Scanner in = new Scanner(System.in); String url = in.nextLine(); try { addr1 = InetAddress.getByName(url); addr1 = InetAddress.getLocalHost(); } catch (UnknownHostException e) { } } }
한번 실행해볼까요?
출력이 안되니 아무 반응도 없는겁니다.
일단 그걸 증명하기위해 하나의 catch 를 더 만들게요.
package net.koreaminecraft.IPAdd; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.Scanner; import net.koreaminecraft.IPAdd.Library.Terminals; public class IPAdded extends Terminals { public static void main(String[] args) { InetAddress addr1 = null, addr2 = null; Terminal("호스트 이름을 입력하세요 : "); Scanner in = new Scanner(System.in); String url = in.nextLine(); try { addr1 = InetAddress.getByName(url); addr1 = InetAddress.getLocalHost(); } catch (UnknownHostException e) { Terminal("UnknownHostException"); } catch (Exception e) { Terminal("Exception"); } } }
그리고 정상적으로 실행됬을시 작동하게 하는 구문도 만들게요.
package net.koreaminecraft.IPAdd; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.Scanner; import net.koreaminecraft.IPAdd.Library.Terminals; public class IPAdded extends Terminals { public static void main(String[] args) { InetAddress addr1 = null, addr2 = null; Terminal("호스트 이름을 입력하세요 : "); Scanner in = new Scanner(System.in); String url = in.nextLine(); try { addr1 = InetAddress.getByName(url); addr1 = InetAddress.getLocalHost(); } catch (UnknownHostException e) { Terminal("UnknownHostException"); } catch (Exception e) { Terminal("Exception"); } Terminal(url + "의 IP 주소 : "); Terminal(addr1.getHostAddress()); Terminal("로컬 IP 주소"); Terminal(addr2.getHostAddress() + ""); } }
아닌것같지만 최종 구문입니다.
이제 실행해보죠.
실행해보죠.
(에러가 일어나서
package net.koreaminecraft.IPAdd; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.Scanner; import net.koreaminecraft.IPAdd.Library.Terminals; public class IPAdded extends Terminals { public static void main(String[] args) { InetAddress addr1 = null, addr2 = null; Terminal("호스트 이름을 입력하세요 : "); Scanner in = new Scanner(System.in); String url = in.nextLine(); try { addr1 = InetAddress.getByName(url); addr1 = InetAddress.getLocalHost(); } catch (UnknownHostException e) { Terminal("UnknownHostException"); } catch (Exception e) { Terminal("Exception"); } try { TerminalII(url + "의 IP 주소 : "); Terminal(addr1.getHostAddress()); TerminalII("로컬 IP 주소"); Terminal(addr2.getHostAddress()); } catch (Exception e) { TerminalII(url + "의 IP 주소 : "); Terminal(addr1.getHostAddress()); TerminalII("로컬 IP 주소"); } } }
로 바꿧습니다)
제 IP 주소만 나오네요.
여기서 cmd 로 ipconfig 를 한것과 같아요.
좋습니다!
이게 어떻게 된 일이냐면 마지막 try 문에서 오류가 난겁니다.
끝 ~
ㅂㅂ
허두
2021.11.06라이브러리 사용하실거면 gradle 이용하시는거 추천..!
근데 한마포는 AWS 쓰는ㄷHAN1110
2021.11.07데이타베이스 안써서
자바 기본 라이브러리만 사용해요.
얘 끝나면 GUI 강좌도 할겁니다.
허두
2021.11.07아, 그러다보니 Terminals 클래스는 어떤 클래스인가용?
HAN1110
2021.11.07제가 개발한 그 "라이브러리" 입니다
을
으로 줄여주죠.
인텔리제이에 어떻게 라이브러리 적용하는지만
알려주시면 배포해드리죠.
허두
2021.11.07느낌상
일것만 같은 느낌이 드는구만유
라이브러리 적용하는 방법으로 gradle을 알려드린건데요..?
굳이 그 쉬운 툴을 쓰고싶지 않으시다면야..
프로젝트 루트 폴더 우클릭 -> Open Module Settings -> Libraries -> + 버튼 -> Java -> .jar 파일 선택 -> OK
HAN1110
2021.11.09와우!!!! 배포할게요.
그리고 거의 비슷한데요? ㅋㅋㅋ
(+ 잠깐!!!! 자바는 같은 패키지에 상속을 받았더라도 private 메서드에 접근 못합니다. 특히나 패키지도 다르니 private 은 못하겠죠?)
허두
2021.11.09으앗.. private가 익숙해서리..ㅋㅋㅋ
하이라이트|highright
2022.01.17전 귀찮으니 log4j나 slf4j를 쓰겠습니다 ㅎㅎ
라이브러리 적용은 jar 파일을 다른사람에게 전달하는걸로도 intellij에서 적용이 가능합니다
사실 라이브러리 적용같은경우는 maven, gradle을 쓰는게 제일 편하죠
maven-publish를 이용해서 하는경우가 대부분입니다(버킷 파일같은 저작권 문제가 있는경우 제외)
근데 이 프로젝트가 gradle이나 maven이 아니라서 maven-publish는 안되겠네유
HAN1110
2022.01.17네. 원하신다면 maven 버전으로 만들어드립니다.
하이라이트|highright
2022.01.19아악 gradle...... 써주세요
HAN1110
2022.01.19알겠습니다. KOR V2 에 Gradle 버전과 일반버전 둘다 드릴게요
하이라이트|highright
2021.11.08패치지 이름.............
프로젝트
2021.11.09라이브러리 배포는 Gradle이 짱이죠 ㅋㅋㅋ
HAN1110
2021.11.09예? 저 사용법 모릅니다.
하이라이트|highright
2021.11.28예전에 API로 플러그인 만드는거 강좌에 올린게 gradle입니다
HAN1110
2021.11.29끄허억!
몰랐어요!
윈초
2022.01.03혹시 자바 stack trace기능 아시나요?
Exception.printStackTrace();로 출력할수있는데, 저렇에 오류 이름 출력하는거보다 더 편하구 오류 해결하기도 쉬워요
HAN1110
2022.01.04저거 와이파이 연결 안되서 그런겁니다.
윈초
2022.01.04? 와이파이랑 관련이 있나요
HAN1110
2022.01.04넵
윈초
2022.01.04저건 그냥 자바 코드인데요... 와이파이랑은 상관 없을텐데요
HAN1110
2022.01.05상관 있습니다. ㅎㅎ
윈초
2022.01.05글구 전 Terminal("UnknownHostException");부분을e.printStackTrace();로 고치는게 더 편하다는 말을 한거구요
HAN1110
2022.01.05아;;
하이라이트|highright
2022.01.05addr2 null
HAN1110
2022.01.05저거 오류 와파때문이라고요.
그때 와이파이 연결 안됬었어요
하이라이트|highright
2022.01.17그 전에 addr2가 null이긴 하니까 이야기 했습니다