개인 자료란 (JE)

  서버 커뮤니티

한국 마인크래프트 포럼

마인크래프트 자료 및 커뮤니티 플랫폼

전체 회원수 127,041명 ( +17명 )

※ 장기간 미활동 회원 제외

Profile HAN1110 대표칭호 없음

HAN1110 9899e780ba984d89824a90ee8deb7cb2

Profile

커뮤니티new 개발자란new 개발자 강좌new 일반 프로그래밍

[Java] 자바로 서버 만들기 #1 - 와 , 자바로 이런걸 만들수 있다고?? & IP 얻기

26 일 전 조회 수 108 추천 수 0

시작전 출처는 "쉽게 배우는 자바 프로그래밍" 입니다.


주의! 해당 강좌는 Java 의 기초문법(Scanner 와 if , while문) 을 할줄 아는사람을 기준으로 제작되였습니다.


안녕하세요! HAN1110 입니다!

오늘은 자바로 서버를 만들어보겠습니다.

그 전 기초로 , IP 주소를 얻어보겠습니다.

클래스를 만들어야겠죠?

전 IntelliJ Idea Community 를 사용하겠습니다.

b0433f9badc0d411735d202f86b8488c.png

b758e88be7b7a0d0e875ceea93f65a80.png

6a4c576ee4e2bc7cfae394dedd15b7d8.png

기초 작업은 끝났네요! 이제 서버가 무엇인지 알아보겠습니다

서버는 쉽게 말해서 , 저희가 접속하는 이 한마포같은겁니다!

한마포 프리루트님 컴퓨터같은거죠.

저희는 클라이언트로 한마포에 접속해 IP 를 얻지 않고

네이버 IP 를 얻어보겠습니다.

어차피 님들 해킹 못하잖아요?

잘 응용 할겁니다.

a7277b72c3ed0e0f617810c5a173c924.png

패키지 만들고 ~

2b52e418fcc118d6bf00ba491d123829.png

하위 패키지 만들고~

f83350b84c90396ede4f6dea148401ec.png

클래스 만들고~

다 끝났네요.

메인 메소드 만들어줍시다.

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 을 조사할때 사용되죠.

어라? 에러가 나네요. 살펴봅시다.

3470008b5a94c7bf8befd65493552df7.png

당연히 오류가 날겁니다!
InetAddress 는 java.util 패키지에 있으니 말이죠.

당장 임포트해줍시다.

임포트해준 뒤엔a1916cc02960a5c9437fb7c88c86bd30.png

오류 없이 정상이네요!

이제 글자를 출력하고 도메인을 입력받아봅시다.

전 추가 라이브러리를 만들어서

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) {
            
        }
    }
}

한번 실행해볼까요?

7afe192e9a3358119a31d7227b3c7798.png

출력이 안되니 아무 반응도 없는겁니다.

일단 그걸 증명하기위해 하나의 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() + "");
    }
}

아닌것같지만 최종 구문입니다.

이제 실행해보죠.

8ac870085494a11991f17e3c148102bf.png

실행해보죠.

(에러가 일어나서

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 주소");
        }
    }
}

로 바꿧습니다)

69f1df3e9de1df9b8a0acbf9eb71ab12.png

제 IP 주소만 나오네요.

여기서 cmd 로 ipconfig 를 한것과 같아요.

좋습니다!

이게 어떻게 된 일이냐면 마지막 try 문에서 오류가 난겁니다.

끝 ~

ㅂㅂ


12개의 댓글

프로젝트
23 일 전

라이브러리 배포는 Gradle이 짱이죠 ㅋㅋㅋ

HAN1110
23 일 전
@프로젝트

예? 저 사용법 모릅니다.

@HAN1110

예전에 API로 플러그인 만드는거 강좌에 올린게 gradle입니다

HAN1110
3 일 전
@하이라이트|highright

끄허억!

몰랐어요!

패치지 이름.............

허두
26 일 전

라이브러리 사용하실거면 gradle 이용하시는거 추천..!

근데 한마포는 AWS 쓰는ㄷ

HAN1110
25 일 전
@허두

데이타베이스 안써서

자바 기본 라이브러리만 사용해요.

얘 끝나면 GUI 강좌도 할겁니다.

허두
25 일 전
@HAN1110

아, 그러다보니 Terminals 클래스는 어떤 클래스인가용?

HAN1110
25 일 전
@허두

제가 개발한 그 "라이브러리" 입니다

System.out.println(String);

Terminal(String);

으로 줄여주죠.

인텔리제이에 어떻게 라이브러리 적용하는지만

알려주시면 배포해드리죠.

허두
25 일 전
@HAN1110

느낌상

public class Terminals {
  private static void Terminal(String str) {
    System.out.println(str);
  }
}

일것만 같은 느낌이 드는구만유


라이브러리 적용하는 방법으로 gradle을 알려드린건데요..?

굳이 그 쉬운 툴을 쓰고싶지 않으시다면야..

프로젝트 루트 폴더 우클릭 -> Open Module Settings -> Libraries -> + 버튼 -> Java -> .jar 파일 선택 -> OK

HAN1110
23 일 전
@허두

와우!!!! 배포할게요.

그리고 거의 비슷한데요? ㅋㅋㅋ

(+ 잠깐!!!! 자바는 같은 패키지에 상속을 받았더라도 private 메서드에 접근 못합니다. 특히나 패키지도 다르니 private 은 못하겠죠?)

허두
23 일 전
@HAN1110

으앗.. private가 익숙해서리..ㅋㅋㅋ

컨텐츠
https://www.koreaminecraft.net/files/thumbnails/952/941/002/262x150.crop.jpg?20211128203943

답안지

한마탐 수능 / 등급컷 + 해설 8

베개냥이

2021-11-25

2

https://www.koreaminecraft.net/files/thumbnails/670/940/002/262x150.crop.jpg?20211124215847

답안지

한마탐 5주차 / 정오표 + 해설 1

베개냥이

2021-11-24

2

https://www.koreaminecraft.net/files/thumbnails/133/938/002/262x150.crop.jpg?20211123001841
마인크래프트로 만든 움직이는 루디브리엄 3

LittleCharlotte

2021-11-22

7