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 非阻塞式
     


  • 相关阅读:
    python 版本 jaeger-client 导入失败 jaeger-client-python
    kubernetes ingress 重定向地址错误
    win10 多用户登录
    kubernetes监控prometheus配置项解读
    最新版 源码编译 docker
    alpine 容器优化
    kubernetes 中安装 heapster 问题
    github开源文章生成pdf
    jmeter分布式测试
    Cucumber(1)
  • 原文地址:https://www.cnblogs.com/leeeee/p/7276542.html
Copyright © 2011-2022 走看看