마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

pc서버 앱 클라이언트 소켓통신 알고리즘 질문드립니다 ㅠ

0 추천

pc 서버 - 앱 클라이언트 서버통신을 구현하고 있는데요

 
앱은 엑티비티를 2개 써서 첫화면에 로그인 두번쨰화면에 데이터 전송 입니다.
 
서버에는 try문 안에 while문을 2개 사용하여 첫번쨰 while은 로그인 두번쨰 while은 데이터전송
 
을 사용하여 로그인이 완료되면 while을 false로 빠져나온다음 두번재 whiled을 실행하는 방식입니다.
 
문제는 앱쪽인데요..
 
 
첫번째 앱 엑티비티 에서 socket 을만들고 서버에 접속합니다. 로그인이 완료되고 인텐드하여 
 
두번재 엑티비티로 가는 과정인데 저는 여기서 두번쨰 엑티비티도 socket을 만들어 접속하는 바람에 
 
데이터는 입력 못한체 또다시 로그인 과정이 나오게됩니다.
 
알기쉽게 정리하면, 
 
(클라이언트) 아이디 패스워드 입력 ->  소켓1생성 -> 서버로그인과정 -> 로그인 완료 -> 데이터전송
이 정상이지만
 
(클라이언트) 아이디 패스워드 입력 -> 소켓1생성 -> 서버로그인과정 -> 로그인 완료 
  -> 소켓2생성(엑티비티2에서도 새로운 소켓을 만들게되므로) -> 로그인과정 -> ...
이렇게 됩니다.
 
물론 로그인서버, 데이터서버를 2개를 두어서 구현하면 되겠습니다만...
 
도저히 안풀려서 질문드립니다. 미치겠어요 ㅠ
 
첫번째 인텐드 시에 putExtra로 소켓을 보내버리면 되겠지만 안되더군요
 
이럴땐 어떻게 해야하나요. 해결책 부탁드립니다. 

 

MarineSnow (750 포인트) 님이 2014년 1월 3일 질문

1개의 답변

0 추천
 
채택된 답변
소켓을 하나만 만드시고 그걸 액티비티에서 가져다 쓰시면 안될까요?
철수야안녕 (6,120 포인트) 님이 2014년 1월 3일 답변
MarineSnow님이 2014년 1월 3일 채택됨
첫엑티비티에서 두번쨰로 어떻게가져오나요 ?
제가 그방법을몰라서ㅠ
싱글턴패턴으로 소켓을 관리하는 클레스를 하나 만들어서 사용하시면 될듯 한데요.

싱글턴이 먼가하면 아래 URL에 간략하게 설명이 있네요.

http://itdp1024.tistory.com/entry/%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4-%EC%8B%B1%EA%B8%80%ED%86%A4-%ED%8C%A8%ED%84%B4-Singleton-Pattern
아 감사합니다 이론은 알겟는데 어떻게 사용할지 잘모르겠네요 ㅠ
지금부터 파보겠습니다.
...