Page 472 - 2020학년도 MDP과제발표회 자료집 (통신과) (3)
P. 472
// ByteBuffer 를 생성한다.
ByteBuffer buffer = ByteBuffer.allocate(2048);
long read = 0;
// 요청한 소켓채널로부터 데이터를 읽어들인다.
read = sc.read(buffer);
buffer.flip();
String data = new String();
CharsetDecoder decoder = Charset.forName("UTF-8").newDecoder();
data = decoder.decode(buffer).toString();
// 메세지 얻어오기
Message msg = m_handler.obtainMessage();
// 메시지 ID 설정
msg.what = DATA_RECV_SUCCESS;
// 메시지 정보 설정 (Object 형식)
msg.obj = data;
m_handler.sendMessage(msg);
// 버퍼 메모리를 해제한다.
clearBuffer(buffer);
}
private void clearBuffer(ByteBuffer buffer){
if (buffer != null) {
buffer.clear();
buffer = null;
}
}
void closeSocket(){
try {
if (m_SocketChannel.isConnected()) {
// 소켓 종료
m_SocketChannel.close();
// 셀렉터 종료
m_Selector.close();
}
} catch (Exception e){
e.printStackTrace();
}
}
492 인천전자마이스터고등학교 - 492 -
정보통신기기과