PC (서버 측)에서 C# .Net 응용 프로그램은 Wi-Fi를 통해 Android 장치 (클라이언트 측)에 22000 바이트의 데이터를 전송해야합니다. 하지만 Android 기기의 dataInputStream
은 2048 바이트 만 표시합니다.DataInputStream은 Android에서 2048 바이트의 데이터 만 수신합니까?
dataInputStream = new DataInputStream(workerSocket.getInputStream());
byte[] rvdMsgByte = new byte[dataInputStream.available()];
for (int i = 0; i < rvdMsgByte.length; i++)
rvdMsgByte[i] = dataInputStream.readByte();
String rvdMsgStr = new String(rvdMsgByte);
나는 다음과 혼란 스러워요 :
- 는 PC의 데이터 만 2048 바이트를 보낼 수 있습니까?
- 또는 Android 기기의 데이터 수신 용량은 2048 바이트입니까?
또는
dataInputStream
에 장치가 모든 바이트를 수신 한 후에도 2048 바이트 만 표시됩니까?(data_received < = 2048 바이트) 이상 코드는 완벽하게 작동합니다.
어쩌면 그것은'dataInputStream.available()'의 public 메소드'available()'의 제한에 있습니다. "더 많은 입력을 위해 블로킹하지 않고 읽거나 건너 뛸 수있는 예상 바이트 수를 반환합니다." http://developer.android.com/reference/java/io/InputStream.html에 따르면 필요한 경우 바이트 배열의 크기를 22000으로 설정하여 작동하는지 확인하십시오. – herom
@herom 나는 같은 것을 먼저했습니다. 바이트 크기를 30000으로 설정했지만 EOFException이 나타납니다. :) – Krish
내가 본다;) @ 존 Skeet는 그것을 잘 설명했다, 그것이 일하는 것을 듣는 것이 좋다 :) – herom