Java.서버_네트워크 게임 만들때 유용한 Socket 교차 알고리즘 3부(객체 직렬화)
안녕하세요 j.sieun 입니다.
이번글에는 서버와 클라한테 데이터를 주고 받거나 임시 데이터를 저장하는 직렬화
부분에 대해서 적어보도록 하겠습니다.
※프로그래밍을 "독학"으로 배워서 용어 대해 전문성이 떨어지는 점 양해바랍니다.※
이건 눈에 보이는 부분이 아니니, 바로 소스를 보여드리겠습니다.
ServerData.java
제가 직렬화(Serializable) 에 대해서 자세히 설명을 한부분이 있습니다.
그때 보여준 소스와 저위에 있는 소스가 많이 똑같습니다.
직렬화 링크
http://jsieun73.tistory.com/entry/%EC%89%BD%EC%A7%80%EB%A7%8C-%EC%96%B4%EB%A0%A4%EC%9A%B4-Java-%EC%9E%90%EB%B0%94-%EC%84%B1%EA%B3%B5%EC%A0%81-8-Socketio-%EC%9D%98-Serializable%EC%A7%81%EB%A0%AC%ED%99%94
입니다.
여기에 대해서는 딱히 설명 드릴부분이 없습니다.
메서드가 쓰인것도 아니고 그냥 implements(구현) 옆에다가 Serializable 만 붙이면 끝나고
그후에 object(구조체) 로 하나 만들면 되는것입니다. 정말 간단합니다.
굳이 소스 해석을 하자면,
public ServerData(String Name, String message,int state,int divisioN) {
여기 안에 보시면 몇가지 변수들이 this 화 되어있습니다.
중요하게 보셔야 할부분이 int state , int divisioN
이 되겠습니다.
//입장
public static final int LOGIN = 10;
//게임 스타트
public static final int START = 20;
//종료
public static final int LOGOUT = 30;
//서버 보내기
public static final int SENDDATA = 40;
이 위에 값들은 (절대 중복 X) 서버와 클라가 데이터를 주고받을때 구분짓는 변수값이며, state 부분은 그 변수값을
집어 넣는 부분입니다.
저번시간에 보여준 것을 예를 들면
switch (data.getState()) {
case ServerData.LOGIN:
이 부분이 있습니다. 클라이언트가 서버한테 LOGIN 상태를 보내기 위해서 state 값에 LOGIN 값을 넣고 클라이언트가 보내면 서버는 case ServerData.LOGIN: 여기로 오게 됩니다.
맨 마지막에 divisioN 이 변수는 교차 알고리즘을 만들때 중요한 요소가 되는 변수입니다.
알고리즘을 다 설명하고 나서 보여드리겠습니다 :D
한가지 팁!을 드리자면, extends 와 implements 에 대해서
많이 어려워 하는거 같은데 간단히 말하자면
class A extends B 를 적으면 B는 무조건 A에 쓰일꺼야!
class A implements B 를 적으면 B가 쓰일수도 있고,
안쓰일수도 있고? case by case?
라고 이해하시면 정말 쉽게 와닿을수 있습니다.
어려운 말로는 상속과 구현이 되겠습니다.
다음 글에는 서버 클라이언트의 쓰레드(thread) 에 대해서
적어보도록 하겠습니다. :D