zoukankan      html  css  js  c++  java
  • java SocketChannel and ServerSocketChannel

    1 SocketChannel

    1.1 打开一个SocketChannel

    SocketChannel socketChannel = SocketChannel.open();

    socketChannel.connect(new InetSocketAddress("http://www.baidu.com", 80));

    1.2 关闭一个SocketChannel

    socketChannel.close();

    1.3 读取一个SocketChannel

    ByteBuffer buf = ByteBuffer.allocate(48);

    int byteRead = socketChannel.read(buf);

    2 ServerSocketChannel

    2.1 ServerSocketChannel in blocking mode

        ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();

        serverSocketChannel.socket().bind(new InetSocketAddress(1111));

        while(true) {

            SocketChannel socketChannel = serverSocketChannel.accept();

            // do something with socketChannel.......

        }

    2.2 ServerSocketChannel in non-blocking mode

        ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();

        serverSocketChannel.socket().bind(new InetSocketAddress(1111));

        serverSocketChannel.configureBlocking(false);

        while(true) {

            SocketChannel socketChannel = serverSocketChannel.accept();

            if (socketChannel != null)

            {

                // do something with socketChannel.......

            }

        }

    在non-blocking mode时,没有人来connect的时候accept()就会直接返回。这也是non-blocking的意义所在,对于文件而言,总是可以读写的,不存在block一说,也就没有non-blocking mode了。

  • 相关阅读:
    CentOS 7 安装MySQL 5.7
    Introduction to BGP (4)
    Introduction to BGP (3)
    Introduction to BGP (2)
    Introduction to BGP (1)
    Cisco NAT Fundation
    Linux安装Nginx
    GRE协议学习与练习
    Oracle Study Note : Users and Basic Security
    Oracle Study Note : Tablespace and Data Files
  • 原文地址:https://www.cnblogs.com/hustdc/p/8109785.html
Copyright © 2011-2022 走看看