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
   414   415   416   417   418   419   420   421   422   423   424