안드로이드 개발 질문/답변
(글 수 45,052)
PC에서 서버를 돌리고 클라이언트를 PC, 스마트폰 정도로 생각해두었는데요
일단 서버 와 클라이언트 관계가 1:N이 되는데
서버에서 많은 수의 클라이언트 접속이 허용되게 하려면
어떻 방향으로 접근해야하나요?
tcp/ip로 할건데, 책에 있는 예제는 1:1 인것 같은데..
1:N을 어떻게 해야할지 모르겠어요
검색해서 보니 IOCP 모델을 서버에 적용해서 한다는데
자바에서 IOCP모델을 지원하는 클래스 같은거는 없나요?
ps. 자바관련 사이트를 아는곳이 없어서 여기에 적었어요..
2010.07.06 16:51:33
iocp 는 윈도우에서 사용하는 겁니다. visual c++ 에서 아주 잘 지원하죠.. 온라인게임들이 대부분 이것을 사용하죠.. 클라이언트는 그냥 소켓사용하시면 됩니다
2010.07.06 17:13:22
예전(스마트폰이 없던 시절)에 비슷한 프로그램을 만들어본 경험이 있긴한데.. 도움이 될런지 모르겠지만..
tcp/ip 통신의 예제가 1:1인것 같다면 아마도 telnet 프로토콜과 같이 항상연결된 상태인것 같습니다.
그러면, sinpk님이 우려하는 1:N(무한대)가 되었을때 반드시 문제가 발생합니다.
그래서 이런경우 http와 같이 한번통신을 주고받고 socket이 끊어지는 방식을 사용하게되면 소켓이 몇개만으로도
많은수의 Client를 연결할수 있을겁니다.
1. 직접구현하시려면 Connection Pool 과 Tread Pool이라는 키워드로 찾아보시면 될겁니다..
2. 좀 쉽게 하는 방법으로 WAS(JBoss,Glassfish등등) 기반에서
XML기반의 메세징서비스쪽을 찾아 보시면 아마 답이 보이지 않을가 합니다.(예,WSDL, SOAP)
tcp/ip 통신의 예제가 1:1인것 같다면 아마도 telnet 프로토콜과 같이 항상연결된 상태인것 같습니다.
그러면, sinpk님이 우려하는 1:N(무한대)가 되었을때 반드시 문제가 발생합니다.
그래서 이런경우 http와 같이 한번통신을 주고받고 socket이 끊어지는 방식을 사용하게되면 소켓이 몇개만으로도
많은수의 Client를 연결할수 있을겁니다.
1. 직접구현하시려면 Connection Pool 과 Tread Pool이라는 키워드로 찾아보시면 될겁니다..
2. 좀 쉽게 하는 방법으로 WAS(JBoss,Glassfish등등) 기반에서
XML기반의 메세징서비스쪽을 찾아 보시면 아마 답이 보이지 않을가 합니다.(예,WSDL, SOAP)




자바로 작성된 멀티채팅 소스만 구해보셔도 기본적인 것은 많이 나오지 않을까 싶습니다.
네트워크 관련 된 내용은 굉장히 광범위한 내용이 많습니다. 따로 책을 구해서 보시는게 좋지 않을까 싶네요.
성능이 뛰어난 서버를 만드시려면 c/c++로 구현하시는게 좋을겁니다.
게임 프로그래밍에서 c/c++을 거의 다 쓰기 때문에 자료도 많이 있구요.