안드로이드 개발 질문/답변
(글 수 45,052)
데스크탑으로 java 서버를 만들고
스마트폰 어플과 c++로 만든 프로그램으로 서버에 주기적으로 접속하는걸 구현했는데요
일단 c++프로그램은 특정 상황이 발생하면 소켓 생성 했다가 요청 처리 후 소켓을 닫는 방식이구요
스마트폰 어플은 켜있는 상태에서 2초 간격으로 소켓 생성 해제를 반복합니다.
일단 폰 2대랑 프로그램 하나랑 서버에 접속시키니까 원할하게 잘 돌아갑니다.
여기서 질문!
질문1) 스마트폰 어플에서 2초 간격으로 계속 소켓을 생성 해제 하는 방법(어플 종료전까지) vs 계속 접속해 있는 방법(어떤 신호를 주면 해제하게끔 코딩)
질문2) 그리고 한번에 접속하는 폰 갯수 100대 이상 가능할까요? 데스크탑 java 서버로... 가능하다면 1000대는.......??????-_ㅠ초보라 잘모르겠어요..
둘 중에 어떤 것이 서버 부하를 줄일 수 있는 방법일까요...
일단 계속 접속해있다가 해제하는게 나을거 같긴 한데
이게 나으면 코딩을 다시해야하네요..ㅋㅋㅋ;
2초 간격으로 계속 생성해제 하는 방법은 많이 힘들까요?




전역변수로 소켙생성해서 처리 후에 닫지말고 사용하시면 될 듯합니다. 이때 소켙과 맞물려서 사용하는 스트림을 닫아버리면 소켙까지 닫혀버리기 때문에 주의하셔야 합니다. 그리고 서버성능과 서버 프로그램만 바쳐주면 동시접속 100명은 충분히 처리할 수 있습니다. 온라인 게임생각해보시면 이해가 가실 듯 합니다.
그리고 클라이언트에서 주기적으로 서버에 접속해서 데이터를 가져오는 폴링방식은 현재의 모바일 디바이스에서는 비추입니다. 특히 2초간격이면 다시 고려해 보심이 좋을 듯 합니다. 테스트 해보시면 아시겠지만 배터리 소모량이 엄청납니다. 모바일 기기의 특성상 항상 배터리가 적게 먹는 걸 고려해야 합니다. 제 생각에는 당연히 서버에서 메세지를 알려주는 푸쉬방식을 사용하셔야 한다고 봅니다. 구글의 C2DM이 안드로이드에서 대표적으로 사용하는 푸쉬서비스 중의 하나이구요 안드로이드 폰 내부적으로 상당수의 기본 서비스가 이런 이유로 푸쉬방식을 사용합니다.