zoukankan      html  css  js  c++  java
  • Hadoop源码分析2: NIO Socket 分析

    1.客户端

    公司产品的客户端的使用阻塞式的Socket,并没有使用NIO,在Hadoop中遇到再议。

    2.服务器端

    2.1 阻塞式
    例子程序

    public class BIOServer {

      static class Hanlder extendsThread {
        privateSocket socket;

        publicHanlder(Socket socket) {
          this.socket= socket;
        }

        @Override
        public void run(){
        try {
           InputStream in = socket.getInputStream();
           BufferedReader brIn = new BufferedReader(newInputStreamReader(in));
           OutputStream out =socket.getOutputStream();
           out.write(("login: " + new Date() + " ").getBytes());
           while (true) {
           //线程在此阻塞,直到读到客户端新的数据
             String cmd =brIn.readLine();
             System.out.println("receive:" + cmd + " ");
            out.write(("return: " + cmd.toUpperCase() +" ").getBytes());
             if("bye".equalsIgnoreCase(cmd)) {
               out.write(("logout:  " + newDate() + " ").getBytes());
               break;
              }
            }
            socket.close();
          }catch (IOException e) {
            e.printStackTrace();
        }
       }
      }

             publicstatic void main(String[] args) {
             try {
               ServerSocket serverSocket = newServerSocket(7777);
               while (true) {
               //线程在此阻塞,直到收到新的连接
               Socket socket =serverSocket.accept();
               //对每个连接使用一个线程进行处理
               new Hanlder(socket).start();
               }
              } catch(IOException e) {
               e.printStackTrace();
             }
          }
    }


    2.2 非阻塞式
     


  • 相关阅读:
    WebApp 里Meta标签大全,webappmeta标签大全
    写给自己的Java程序员学习路线图
    JAVA学习路线图
    JavaScript经典作用域问题(转载)
    js 判断当前操作系统是ios还是android还是电脑端
    css动画,展开折叠图标
    CSU 1335 高桥和低桥
    codevs 1341 与3和5无关的数
    noi 7827 质数的和与积
    51nod 1082 与7无关的数
  • 原文地址:https://www.cnblogs.com/leeeee/p/7276542.html
Copyright © 2011-2022 走看看