美文网首页
JAVA NIO 翻译系列(八、 SocketChannel)

JAVA NIO 翻译系列(八、 SocketChannel)

作者: shadowCc | 来源:发表于2017-08-11 17:00 被阅读37次

    Java NIO SocketChannel是一个连接tcp 协议的socket的channel。跟以前的java 网络socket是一样的,有两个方式去创建。

    1)连接一个服务端,打开一个SocketChannel

    2)当一个连接抵达ServerSocketChannel,SocketChannel可以被创建

    打开SocketChannel

    SocketChannel socketChannel = SocketChannel.open();

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

    关闭SocketChannel

    socketChannel.close();

     从SocketChannel读

    ByteBuffer buf = ByteBuffer.allocate(48);

    int bytesRead = socketChannel.read(buf);

    read方法读取数据从channel到buffer,返回值表示多少个数据读到buffer里面了,如果返回-1,代表流已经读取到头了,或者连接关闭了。

    向SocketChannel中写

    注意write方法是在一个循环内部的.。因为无法保证有多少个数据写到Channel中,所以不断重复直到buffer中没有要写的数据了。

    非阻塞模式

    你可以 设置SocketChannel为非阻塞模式,设置之后,调用connect()、read()、write()方法在异步模式下。

    相关文章

      网友评论

          本文标题:JAVA NIO 翻译系列(八、 SocketChannel)

          本文链接:https://www.haomeiwen.com/subject/xfhrrxtx.html