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
相关推荐
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-Channel-FileChannel详解(一) - **主要内容**:深入探讨FileChannel的高级用法,如文件锁定等。 - **学习目标**:掌握FileChannel的进阶功能。 #### 6. Java NIO-Channel-FileChannel详解(二) - **主要...
### Java NIO 系列教程知识点详解 #### 一、Java NIO 概述 Java NIO (New IO) 是 Java SE 1.4 版本引入的一种新的输入/输出方式,它提供了一种替代传统的 Java IO 包的方式。Java NIO 主要包括三个核心组成部分:*...
### Java NIO API详解 #### 一、引言 在Java早期版本中,I/O操作主要依赖于`java.io`包中的流式API,这些API虽然简单易用,但其本质是阻塞式的,这意味着每次读写操作都会等待直至完成。这种机制在处理大量并发...
常见的通道类有`FileChannel`、`SocketChannel`和`ServerSocketChannel`等。 2. **缓冲区(Buffers)**:缓冲区是NIO中的重要概念,它是数据的实际容器。在进行读写操作时,我们先将数据存入缓冲区,然后再从缓冲区...
Java.nio.channels包中定义了多种类型的通道,如FileChannel用于文件操作,SocketChannel和ServerSocketChannel用于网络通信。通道可以与缓冲区交互,数据通过通道读入或写出缓冲区。 3. **选择器(Selector)**:...
【Java 高并发八:NIO和AIO详解】 NIO(New Input/Output),从Java 1.4版本开始引入,是对传统IO模型的一种改进。传统的IO模型基于流(Stream),而NIO则基于块(Block)进行数据传输,提高了处理大量数据时的效率...
Java NIO提供了多种类型的通道,如FileChannel用于文件操作,SocketChannel和ServerSocketChannel分别用于网络连接的读写。通道与传统流的区别在于,通道是双向的,可以同时进行读写操作,而流通常是单向的。 缓冲...
为了实现Java NIO,你需要使用`Selector`、`ServerSocketChannel`和`SocketChannel`,并利用缓冲区进行数据交换。通过选择器,服务器可以在一个单独的线程中处理多个客户端连接,显著提升了并发性能。在处理高并发...
### Java NIO 实现Socket通信详解 #### 一、NIO与传统IO的区别及优势 在探讨如何使用Java NIO实现Socket通信之前,我们需要先理解NIO(Non-blocking I/O,非阻塞I/O)与传统阻塞I/O之间的区别。 **传统阻塞I/O...
### Java NIO 相关知识点详解 #### Java NIO 概述 Java NIO(New IO)是从 Java 1.4 版本开始引入的一种新的 I/O 处理方式,它提供了一种不同于传统 Java IO 的操作模式。NIO 的核心组件包括 Channel(通道)、...
### Java NIO 系列教程知识点详解 #### Java NIO 概述 Java NIO (New IO) 是从 Java 1.4 开始提供的一种新的 I/O 处理方式,旨在改进传统 Java IO API 的性能并引入更高效的数据处理机制。Java NIO 主要包括三大...
- **ServerSocketChannel**:用于监听并接受客户端的TCP连接请求。 - **Buffers**:Buffers是NIO中的数据容器,用于存储从Channel读取的数据或将数据写入Channel。Java NIO支持多种类型的Buffer,包括: - **...
### 二、`NioServer`详解 `NioServer`是基于`java.nio`实现的服务器端程序,通常包括以下几个关键组件: 1. **ServerSocketChannel**:用于监听客户端连接请求。通过`ServerSocketChannel.open()`创建,`bind()`...
服务器端创建一个ServerSocketChannel,监听客户端的连接请求。每当有新的连接建立或已有连接有数据可读时,Selector会通知服务器。服务器根据Selector的结果处理每个连接,读取客户端发送的数据,并将响应广播回...
Java NIO实战之聊天室功能详解 Java NIO实战之聊天室功能详解主要介绍了Java NIO实战之聊天室功能,结合实例形式详细分析了Java NIO聊天室具体的服务端、客户端相关实现方法与操作注意事项。 Java NIO概述 Java ...
Java编程中的IO模型详解:BIO,NIO,AIO的区别与实际应用场景分析 IO模型在计算机编程中扮演着至关重要的角色,特别是在网络通信中。Java提供了三种主要的IO模型:BIO(Blocking IO),NIO(Non-blocking IO),...
Java NIO 服务器端开发详解 Java NIO 服务器端开发是 Java 语言中的一种高性能的 I/O 模式,提供了非阻塞式的 I/O 操作,能够提高服务器端的性能和可扩展性。下面是 Java NIO 服务器端开发的详细介绍: 一、NIO ...
"JAVA-NIO之Socket/ServerSocket Channel详解" JAVA-NIO中有两个重要的Channel:ServerSocketChannel和SocketChannel。下面我们将详细介绍这两个Channel的使用和应用。 一、ServerSocketChannel ...