`
QING____
  • 浏览: 2253299 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

NIO-ServerSocketChannel详解

 
阅读更多

ServerSocketChannel类似于SocketChannel[参考:http://shift-alt-ctrl.iteye.com/blog/1840409],只不过ServerSocketChannel使用server端.ServerSocketChannel是ServerSocket + Selector的高层封装.可以通过socket()方法获得与其关联的ServerSocket.

 

  • public abstract SocketChannel open():打开channel.通过底层SelectorProvider.provider().openServerSocketChannel();此后需要进行bind(InetAddress)来建立本地连接.
  • public final int validOps():返回一个有效的操作集,此通道只支持OP_ACCEPT
  • public abstract ServerSocket socket():获取关联的ServerSocket.
  • public abstract SocketChannel accept() throws IOException:接受连接.返回SocketChannel,如果此通道为非阻塞模式,那么此方法可能立即返回,如果有连接请求则返回,否则返回null.非阻塞模式下,此方法将无限期阻塞,知道获得连接请求位置.不管当前ServerSocketChannel为何种阻塞模式,获得的SocketChannel必定为"阻塞模式".在很多情况下,我们不会使用accept方法,而是基于noblocking模式下,获取OP_ACCEPT事件.
ServerSocketChannel channel = ServerSocketChannel.open();
SocketAddress address = new InetSocketAddress(port);
channel.configureBlocking(false);
ServerSocket socket = channel.socket();
socket.setReuseAddress(true);
socket.bind(address);
Selector selector = Selector.open();
selector.keys();
channel.register(selector, SelectionKey.OP_ACCEPT);
while(true){
	Set<SelectionKey> keys = selector.selectedKeys();
	//////if(key.isAcceptable()){....}
}

 

实例参考部分:http://shift-alt-ctrl.iteye.com/blog/1840554

分享到:
评论

相关推荐

    Java NIO实战开发多人聊天室

    08-Java NIO-Channel-ServerSocketChannel.mp4 09-Java NIO-Channel-SocketChannel.mp4 10-Java NIO-Channel-DatagramChannel.mp4 11-Java NIO-Channel-分散和聚集.mp4 12-Java NIO-Buffer-概述.mp4 13-Java NIO-...

    java网络编程NIO视频教程

    Java NIO-Channel-FileChannel详解(一) - **主要内容**:深入探讨FileChannel的高级用法,如文件锁定等。 - **学习目标**:掌握FileChannel的进阶功能。 #### 6. Java NIO-Channel-FileChannel详解(二) - **主要...

    Java-NIO-系列教程

    ### Java NIO 系列教程知识点详解 #### 一、Java NIO 概述 Java NIO (New IO) 是 Java SE 1.4 版本引入的一种新的输入/输出方式,它提供了一种替代传统的 Java IO 包的方式。Java NIO 主要包括三个核心组成部分:*...

    Java_NIO_API详解

    ### Java NIO API详解 #### 一、引言 在Java早期版本中,I/O操作主要依赖于`java.io`包中的流式API,这些API虽然简单易用,但其本质是阻塞式的,这意味着每次读写操作都会等待直至完成。这种机制在处理大量并发...

    Java NIO详解及源码下载

    常见的通道类有`FileChannel`、`SocketChannel`和`ServerSocketChannel`等。 2. **缓冲区(Buffers)**:缓冲区是NIO中的重要概念,它是数据的实际容器。在进行读写操作时,我们先将数据存入缓冲区,然后再从缓冲区...

    Java_NIO_API详解[参照].pdf

    Java.nio.channels包中定义了多种类型的通道,如FileChannel用于文件操作,SocketChannel和ServerSocketChannel用于网络通信。通道可以与缓冲区交互,数据通过通道读入或写出缓冲区。 3. **选择器(Selector)**:...

    Java 高并发八:NIO和AIO详解

    【Java 高并发八:NIO和AIO详解】 NIO(New Input/Output),从Java 1.4版本开始引入,是对传统IO模型的一种改进。传统的IO模型基于流(Stream),而NIO则基于块(Block)进行数据传输,提高了处理大量数据时的效率...

    JavaNIO想详解1

    Java NIO提供了多种类型的通道,如FileChannel用于文件操作,SocketChannel和ServerSocketChannel分别用于网络连接的读写。通道与传统流的区别在于,通道是双向的,可以同时进行读写操作,而流通常是单向的。 缓冲...

    Java NIO详解(学习资料)

    为了实现Java NIO,你需要使用`Selector`、`ServerSocketChannel`和`SocketChannel`,并利用缓冲区进行数据交换。通过选择器,服务器可以在一个单独的线程中处理多个客户端连接,显著提升了并发性能。在处理高并发...

    java nio 实现socket

    ### Java NIO 实现Socket通信详解 #### 一、NIO与传统IO的区别及优势 在探讨如何使用Java NIO实现Socket通信之前,我们需要先理解NIO(Non-blocking I/O,非阻塞I/O)与传统阻塞I/O之间的区别。 **传统阻塞I/O...

    javaNIO很好的资料

    ### Java NIO 相关知识点详解 #### Java NIO 概述 Java NIO(New IO)是从 Java 1.4 版本开始引入的一种新的 I/O 处理方式,它提供了一种不同于传统 Java IO 的操作模式。NIO 的核心组件包括 Channel(通道)、...

    Java NIO系列教程

    ### Java NIO 系列教程知识点详解 #### Java NIO 概述 Java NIO (New IO) 是从 Java 1.4 开始提供的一种新的 I/O 处理方式,旨在改进传统 Java IO API 的性能并引入更高效的数据处理机制。Java NIO 主要包括三大...

    Java NIO系列教程(一) Java NIO 概述

    - **ServerSocketChannel**:用于监听并接受客户端的TCP连接请求。 - **Buffers**:Buffers是NIO中的数据容器,用于存储从Channel读取的数据或将数据写入Channel。Java NIO支持多种类型的Buffer,包括: - **...

    android nio程序

    ### 二、`NioServer`详解 `NioServer`是基于`java.nio`实现的服务器端程序,通常包括以下几个关键组件: 1. **ServerSocketChannel**:用于监听客户端连接请求。通过`ServerSocketChannel.open()`创建,`bind()`...

    Java NIO Selector用法详解【含多人聊天室实例】

    服务器端创建一个ServerSocketChannel,监听客户端的连接请求。每当有新的连接建立或已有连接有数据可读时,Selector会通知服务器。服务器根据Selector的结果处理每个连接,读取客户端发送的数据,并将响应广播回...

    Java NIO实战之聊天室功能详解

    Java NIO实战之聊天室功能详解 Java NIO实战之聊天室功能详解主要介绍了Java NIO实战之聊天室功能,结合实例形式详细分析了Java NIO聊天室具体的服务端、客户端相关实现方法与操作注意事项。 Java NIO概述 Java ...

    Java编程中的IO模型详解:BIO,NIO,AIO的区别与实际应用场景分析

    Java编程中的IO模型详解:BIO,NIO,AIO的区别与实际应用场景分析 IO模型在计算机编程中扮演着至关重要的角色,特别是在网络通信中。Java提供了三种主要的IO模型:BIO(Blocking IO),NIO(Non-blocking IO),...

    Java NIO服务器端开发详解

    Java NIO 服务器端开发详解 Java NIO 服务器端开发是 Java 语言中的一种高性能的 I/O 模式,提供了非阻塞式的 I/O 操作,能够提高服务器端的性能和可扩展性。下面是 Java NIO 服务器端开发的详细介绍: 一、NIO ...

    JAVA-NIO之Socket/ServerSocket Channel(详解)

    "JAVA-NIO之Socket/ServerSocket Channel详解" JAVA-NIO中有两个重要的Channel:ServerSocketChannel和SocketChannel。下面我们将详细介绍这两个Channel的使用和应用。 一、ServerSocketChannel ...

Global site tag (gtag.js) - Google Analytics