java

Java.서버_네트워크 게임 만들때 유용한 Socket 교차 알고리즘 3부(객체 직렬화)

sieunju 2016. 8. 6. 02:11
반응형

안녕하세요 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




반응형