Development/Java

    [JAVA / 네트워크] 멀티룸 구조에 대하여(게임&채팅 방 여러개)

    멀티 룸 구조라는 것에 대해 이해는 하고 있지만 구현에 애를 먹었던 기억이 있다. 이는 채팅 이라던지, 게임에 통용되는 개념으로 하나의 방을 가지는 게임과 채팅이라면 상관은 없으나, 여러개의 방을 가져야하는 프로그램에서는 구현을 해주어야 한다. 일단 접속하는 각각의 유저마다 소켓을 가지고 있을 것이다. 서버에서는 여러개의 소켓을 생성하여 클라이언트를 할당하게 되고, 그 소켓을 방(Room) 개념에 맞게 분배해주면 간단하게 구현이 된다. 예를 들어 메인 클래스가 있다고 했을 때 멀티룸 구조를 위해서 두개의 클래스가 더 필요하게 된다. 편의상 간단하게 RoomManager, GameRoom 이라는 이름으로 정한다고 가정하자. 구조는 다음과 같다. 그림이 많이 심플하긴한데.. 전달하고자 하는 의미는 전달되었으..

    [JAVA / 네트워크] 간단한 통신 메세지 프로토콜 구성하기

    해당 글은 직접 Message를 다루는 코드를 짜보는 거에 의의를 두고 만약 실제로 메세지 송/수신에 필요한 프로토콜을 쓰고 싶다면 이거말고 MessagePack(MsgPack), Protobuf, Flatbuffers, Thrift, GRPC를 사용하도록 합시다 사실 이 글은 필자가 직접 느껴왔던 어려움을 적는(?) 포스팅이다. 대학교 재학 중, 네트워크 과목을 이수하면서 JAVA와 C계열 언어로 채팅 프로그램을 개발해야 했던 적이 있었는데 그 때는 진짜 아무런 기초가 없었기 때문에 지금와서 돌이켜보면 매우 비효율적으로 메세지 송/수신을 했다. 컴퓨터에서 다른 컴퓨터로 데이터를 전송하기 위해선 논리적인 연결이 필요한데, 그것이 많이 들어봤을법한 TCP / UDP / HTTP 등으로 연결을 하는 것이다...

    [JAVA] HTTP 페이지 읽기

    HTTP가 무엇인지에 대한 포스팅에 이어 JAVA에서 해당 HTTP 연결을 수립하는 것과 동시에 페이지를 읽어오는 방법에 대한 코드이다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; public class Http { public static void main(String[] args) throws MalformedURLException{ URL url = new URL("http://www.tistory.com");..

    [JAVA] 간단한 스택 구현

    JAVA를 이용한 스택 구현입니다. 간단하게 배열을 이용한 방법이고, 사용자가 입력하는 size에 따라 Stack의 크기가 결정됩니다. 크게 어렵지 않으니 활용하시길 스택 클래스에는 기본적으로 Peek, Pop, Push 의 메소드가 구현되어야 기초 동작을 수행할 수 있습니다. package stack; class Stack { int top; int[] stack; int size; public Stack(int size) { top = -1; stack = new int[size]; this.size = size; } public int peek() { return stack[top]; } public void push(int value) { stack[++top] = value; System.out..