Page 203 - 3-1
P. 203
int byteAvailable = mInputStream.available(); // 수신 데이터 확인
if (byteAvailable > 0) { // 데이터가 수신된 경우.
byte[] packetBytes = new byte[byteAvailable];
// read(buf[]) : 입력스트림에서 buf[] 크기만큼 읽어서 저장 없을 경
우에 -1 리턴.
mInputStream.read(packetBytes);
for (int i = 0; i < byteAvailable; i++) {
byte b = packetBytes[i];
if (b == mCharDelimiter) {
byte[] encodedBytes = new byte[readBufferPosition];
// System.arraycopy( 복사할 배열 복사시작점 복사된 배열, , ,
붙이기 시작점 복사할 개수, )
// readBuffer 배열을 처음 부터 끝까지 encodedBytes 배열
로 복사.
System.arraycopy(readBuffer, 0, encodedBytes, 0,
encodedBytes.length);
final String data = new String(encodedBytes, "US-ASCII");
readBufferPosition = 0;
handler.post(new Runnable() {
// 수신된 문자열 데이터에 대한 처리.
@Override
public void run() {
// mStrDelimiter = '\n';
mEditReceive.setText(mEditReceive.getText().toString() +
data + mStrDelimiter);
}
});
} else {
readBuffer[readBufferPosition++] = b;
}
}
}
} catch (Exception e) { // 데이터 수신 중 오류 발생.
Toast.makeText(getApplicationContext(), " 데이터 수신 중 오류가 발생 했
습니다.",
- 203 -