Page 419 - 2020학년도 MDP과제발표회 자료집 (통신과) (3)
P. 419
public SocketManager(String ip, int port, Handler h) {
this.IP = ip;
this.PORT = port;
this.m_handler = h;
m_readData = new readDataThread();
m_readData.start();
}
private void setSocket(String ip, int port) throws IOException {
m_Selector = Selector.open();
m_SocketChannel = SocketChannel.open(new InetSocketAddress(ip, port));
m_SocketChannel.configureBlocking(false);
m_SocketChannel.register(m_Selector, SelectionKey.OP_CONNECT |
SelectionKey.OP_READ | SelectionKey.OP_WRITE);
}
public void sendData(String data){
m_sendData = new sendDataThread(m_SocketChannel, data);
m_sendData.start();
}
private void read(SelectionKey key) throws Exception {
SocketChannel sc = (SocketChannel) key.channel();
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();
msg.what = DATA_RECV_SUCCESS;
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()) {
인천전자마이스터고등학교
- 437 - 정보통신기기과 437