응용 프로그램은 두 부분으로 구성되어 있습니다. 서버 부분은 Linux 컴퓨터에서 실행됩니다. 클라이언트 부분 인 Android 애플리케이션은 서버를 쿼리하고 필요한 응답을받습니다. 두 부분 모두 Java로 작성되고 소켓 기반 통신을 사용하며 텍스트 데이터를 전송합니다.소켓 데이터를 읽을 수있는 신뢰할 수있는 방법
public static String ReadAvailableTextFromSocket(BufferedReader input) throws IOException {
if (input.ready() == false) {
return null;
}
StringBuilder retVal = new StringBuilder();
while(input.ready()) {
char ch = (char) input.read();
retVal.append(ch);
}
return retVal.toString();
}
그러나, 그 신뢰성이 될 것 같지 않습니다 :
오른쪽 요청을 전송 한 후, 여기에 클라이언트가 응답을 수신하는 방법입니다. 입력이 서버 응답 시간 또는 전송 지연으로 인해 항상 준비되지는 않습니다.
처럼 보입니다. input.ready()는 데이터 가져 오기를 기다리는 올바른 방법이 아닙니다.
이 작업을 수행하는 더 좋은 방법이 있는지 궁금합니다. 아마도 내가 사용할 수있는 몇 가지 표준 연습이있을 것입니다.
감사합니다. 데이터는 현재 백그라운드 스레드에서 수신 중입니다. 그러나 문제는 여전히 사라지지 않는다고 생각합니다. 백그라운드 나 포 그라운드 중 일부 스레드는 특정 시간을 기다린 다음 데이터가 오지 않을 것이라고 결정해야합니다. 나는 단지 얼마나 오래 기다려야하는지에 대한 개념을 소개해야 할지도 모른다. – Peter