java

Java.서버_네트워크 게임 만들때 유용한 Socket 교차 알고리즘 마지막 5부

sieunju 2016. 8. 9. 02:46
반응형

이번 글이 교차 알고리즘 마지막 글이 되겠습니다. 

우선 소스부터 보여드리겠습니다.

ServerAbout.java

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

중요하다고 생각 하는 부분만 공개 해드렸고, 그렇지 않은 부분은 한번 생각해보시라는 뜻에서 

"비공개" 했습니다. 


너무 공개만 해드리면, 너무 복붙 사태가 일어 날거 같아서 이 부분의 특정 부분만 "비공개" 했습니다. 


주요 메서드 해석 해보겠습니다.

public synchronized void addClient(ServerThread ft) {

이 메서드는 클라이언트가 서버에 접속할때 꼭 필요한 메서드 입니다. 

Vector.addElement = 벡터클래스를 사용했고, 어떠한 값을 저장한다라는 뜻입니다. 

쉽게 말해서 클라이언트가 접속할때마다 하나하나 "등록"한다라는 뜻입니다. 


public synchronized void broadCasting(ServerData data) {

이 메서드 같은 경우에는 매우 중요한 메서드 입니다. (비공개 처리 했습니다.)

이부분이 가장 많이 사용되는 부분인데요. 이 메서드에 대해서 힌트를 드리자면 

벡트 클래스를 사용했고, 값을 반환하여 서버가 클라한테 sendMessage 하는 부분입니다.


지금까지 서버&클라이언트, 쓰레드 그리고 직렬화에 대해서 소스를 보여드렸는데요 

물론 다 중요하긴 하지만 ServerAbout.java 이 클래스는 그것들 보다 좀더 중요한 부분입니다. 

실질적으로 서버가 클라한테 데이터를 보내는 역활을 하는 메서드가 있기 때문입니다. :D 

클라가 데이터를 보내는 메서드는 Client.java 에 있습니다. 


이 ServerAbout.java을 좀더 쉽게 이해하실려면 java (벡터)Vector 클래스와 

데이터를 보내는 동기화(synchronized)에 대해서 공부하시면 이해하기 쉽습니다. 

(특히 벡터와 동기화 부분은 눈에 보이는 것이 아니기 때문에 더더욱 공부를 해야 합니다. :D)


학생분들은 동기화 와 비동기화에 대해서 이해하기 어려우실텐데요, 현재 저도 100% 

이해하진 않았습니다. 그래서 제가 만든 이 알고리즘도 100% 완벽한 것은 아닙니다. 


이상 글을 마치도록 하겠습니다. 


다음 글에는 동기화와 비동기 그리고 제가 만든 교차 알고리즘에 대해서 설명을 해드리도록 하겠습니다. 

감사합니다.



반응형