2011-08-10 4 views
0

소켓 프로그래밍을 활용 한 Android 프로젝트를 시작했습니다. 플랫폼은 Android 3.0입니다. 플랫폼 요구 사항 때문에 AsyncTask에서 소켓 작업을 적용하고 있습니다.Android 3.0 소켓 응답 대기 시간

서버에 연결하여 명령을 성공적으로 보내지 만받는 응답이 불완전 해지는 것이 문제입니다. 명령을 보낸 후 응답이 완전히 끝날 때까지 기다려야합니다. 그렇지 않으면 부분 응답입니다. 디버그 모드에서 기다릴 때 전체 응답을 얻는 방법은 응답 변수를 사용하는 다음 코드 행으로 넘어 가기 전에 잠시 기다렸다가 전체 예상 결과를 얻었습니다.

나는 타이머

Timer myTimer = new Timer(); 

myTimer.wait(2000); 

퍼팅 시도했지만 그것은 단지 전체 응답이 전혀 작동하지했다. 어떤 제안이라도 대단히 감사 할 것입니다.

+0

응답이 완료되었음을 상대방에게 알리기 위해 감시의 가치를 사용하고 있습니까? –

+0

@Shane Wealti 특별히 내 측면에서 보낸 값은 없지만 다음과 같은 명령 프롬프트와 같은 줄 표시기의 시작 부분이 항상 있습니다. ServerName> – honour

답변

0

우선이 문제가 발생하지 않아야합니다. 대기 시간은 모든 플랫폼에서 정상이 아니므로 네트워크 연결에 문제가있을 수 있습니다. 그러나 프로그래밍 방식으로 문제를 해결하고 싶다면 계속 읽어보십시오.

때문에 당신은 그것을 위해 타이머를 사용하지 않습니다

가) 심지어 당신이 값을 얻고, 한 특정 할 수 없다 기다린 후

b)는 당신이 될 것입니다 값을 빨리 얻으면 불필요하게 작업 속도를 늦 춥니 다.

더 좋은 옵션은 수신 된 값을 루프에서 검사하여 코드가 완료되었는지 확인한 다음 한 번 다음 비트로 이동하는 것입니다.

+0

제안하는 솔루션은 내가 어떤 응답인지 알고있는 경우에만 유효합니다 매번 얻을 것입니다. 지금은 테스트 환경에 있고 모든 것이 정적이어서 데이터가 완전하다는 것을 알았습니다. 귀하의 제안은 실시간 솔루션을위한 것이 아닙니다. 하지만 시간 내 주셔서 감사합니다. 감사합니다. – honour

+0

그냥 시간 초과를 추가하십시오 - 너무 많은 시간이 지나고 전체 패킷을 수신하지 못했거나 진행하지 못한 경우 전송 오류를 가정하고 계속 진행하십시오. – wohanley

+0

나는 단지 int 전송을 가정하고 계속 진행할 수 없다. 나는 그 반응과 관련하여 다른 것들을 처리 할 필요가있다. – honour