java

Java.서버_네트워크 게임 만들때 유용한 Socket 교차 알고리즘 1부(서버편)

sieunju 2016. 8. 3. 00:30
반응형

안녕하세요 J.sieun 입니다. 

이번글에는 제가 직접 손코딩한 Socket 알고리즘 - 서버편 이 되겠습니다. 

이 알고리즘을 만들게 된 계기가

저는 현재 학생이고, 작년에 자바에 대해서 독학하다가 학교에서 배운 기본 소켓에 

대해서 많은 불만을 품다가 '내가 그냥 내 식대로 만들어 볼까..?' 라는 생각을 가지고 

만들게 되었습니다. 


우선 실행 화면 보여드리겠습니다. 

서버 부분입니다.

클라이언트 부분입니다.(클라이언트는 한꺼번에 보여드립니다.)

기능이 어떤건지만 보여드릴려고 최대한 간단한 형식으로 만들었습니다. 

우선 주황색 네모 친 부분과 파란색 네모 친 부분을 보시면, 

분명 "같은" 클라이언트 창을 2개 열었는데 서로 다른 값을 보여주고있습니다. 

물론 서버에도 

"Client1 에게 값을 전달한다"

"Client2 에게 값을 전달한다"

라고 명시되어 있습니다. 


학교에서는 클라이언트창을 서로 공유하는 것으로 배웠을 것입니다. 

저도 그렇게 배웠고요 그러다보면 이 배운것을 기반으로 

게임을 만들기에는 정말 많이 불편합니다. 

하지만, 저런식으로 값을 서로 달리하면 카드게임이라 던지 

서로 숨겨야 하는 부분에 대해서 편리하게 사용하실수 있습니다. 


서론이 좀 길었군요 서버 - 소스를 보여드리겠습니다. 

-Server.java-

소스 해석 해드리겠습니다. 

우선 이건 Server 부분입니다.  한마디로 처음에 이걸 실행시켜야 합니다. 

public void initialize() 는 Swing 부분이니 패스하겠습니다. 

public void actionPerformed() 이부분은 버튼 클릭시 이벤트 처리입니다. 

public boolean beforeExit()  이부분은 서버 나가는 메서드입니다. 

public void run() 서버 run 부분 서버 접속하는 부분입니다. 

public void updateData(ServerData data) 이부분이 중요합니다. 클라에서 받는 데이터가 변하는거에 대해서 

여기서 처리합니다. 

최대한 간단하게 처리했으니 소스를 보시면 해석되실거라고 생각이 듭니다. 



아직 못보여드린게 많습니다. 

다음에는 서버 쓰레드와 직렬화에 대해서 포스팅해보겠습니다. 

감사합니다. 







반응형