`

java nio Selector(多路复用,异步阻塞)例子

    博客分类:
  • java
阅读更多
package znio;

import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.nio.ByteBuffer;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel;
import java.util.Date;
import java.util.Iterator;
import java.util.Set;

public class DataServer {

	public static void main(String[] args) throws Exception {
		
		int[] ports = {8001,8002,8003,8004,8005};
		Selector selector = Selector.open();
		
		for(int i=0; i<ports.length; i++){
			ServerSocketChannel ssc = ServerSocketChannel.open();
			ssc.configureBlocking(false);
			ServerSocket ss = ssc.socket();
			InetSocketAddress isa = new InetSocketAddress(ports[i]);
			ss.bind(isa);
			ssc.register(selector, SelectionKey.OP_ACCEPT);
			System.out.println("服务器运行,在端口" + ports[i] + "上监听!");
		}

		int keysAdd = 0;
		while((keysAdd = selector.select()) > 0){
			Set<SelectionKey> selectedKeys = selector.selectedKeys();
			Iterator<SelectionKey> iter = selectedKeys.iterator();
			while(iter.hasNext()){
				SelectionKey selectedKey = iter.next();
				if(selectedKey.isAcceptable()){
					ServerSocketChannel ssc = (ServerSocketChannel)selectedKey.channel();
					SocketChannel sc = ssc.accept();
					sc.configureBlocking(false);
					ByteBuffer bb = ByteBuffer.allocate(1024);
					bb.put(("server response time: " + new Date()).getBytes());
					bb.flip();
					sc.write(bb);
					sc.close();
				}
			}
			selectedKeys.clear();
		}
	}

}

 

分享到:
评论

相关推荐

    Java Nio selector例程

    我研究并实现的Java Nio selector例子。java侧起server(NioUdpServer1.java),基于Java Nio的selector 阻塞等候,一个android app(NioUdpClient1文件夹)和一个java程序(UI.java)作为两个client分别向该server...

    Java NIO Selector选择器简介.pdf

    java NIO Selector选择器简介.pdf

    java多路复用socket客户端.

    Java NIO中的SocketChannel是一个连接到TCP网络套接字的通道。可以通过以下2种方式创建SocketChannel: 打开一个SocketChannel并连接到互联网上的某台服务器。 一个新连接到达ServerSocketChannel时,会创建一个...

    java nio Selector的使用-客户端

    NULL 博文链接:https://flym.iteye.com/blog/392373

    JavaNIO chm帮助文档

    Java NIO系列教程(六) Selector Java NIO系列教程(七) FileChannel Java NIO系列教程(八) SocketChannel Java NIO系列教程(九) ServerSocketChannel Java NIO系列教程(十) Java NIO DatagramChannel Java ...

    java NIO和java并发编程的书籍

    java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java...

    Java_NIO-Selector.rar_java nio_selector

    Java_NIO类库Selector机制解析 ,很详细 有兴趣可以下载看看。

    Java NIO——Selector机制解析三(源码分析)

    NULL 博文链接:https://goon.iteye.com/blog/1775421

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

    主要介绍了Java NIO Selector用法,结合实例形式分析了Java NIO Selector基本功能、原理与使用方法,并结合了多人聊天室实例加以详细说明,需要的朋友可以参考下

    Java_NIO类库Selector机制解析.doc

    Java_NIO类库Selector机制解析.docJava_NIO类库Selector机制解析.docJava_NIO类库Selector机制解析.docJava_NIO类库Selector机制解析.doc

    Java NIO实战开发多人聊天室

    01-Java NIO-课程简介.mp4 05-Java NIO-Channel-FileChannel详解(一).mp4 06-Java NIO-Channel-FileChannel详解(二).mp4 08-Java NIO-Channel-...23-Java NIO-Selector-示例代码(客户端).mp4 24

    java nio 包读取超大数据文件

    Java nio 超大数据文件 超大数据文件Java nio 超大数据文件 超大数据文件Java nio 超大数据文件 超大数据文件Java nio 超大数据文件 超大数据文件Java nio 超大数据文件 超大数据文件Java nio 超大数据文件 超大数据...

    java NIO 视频教程

    Java NIO(New IO)是一个可以替代标准Java IO API的IO API(从Java 1.4开始),Java NIO提供了与标准IO不同的IO工作方式。 Java NIO: Channels and Buffers(通道和缓冲区) 标准的IO基于字节流和字符流进行操作的,...

    一个java NIO的例子

    一个java NIO的例子 有很详细的每一步的描述,很好去理解

    Java NIO英文高清原版

    Java NIO英文高清原版

    Redis底层原理(nio多路复用模型)

    Redis底层原理 java学习 nio多路复用模型

    JAVA NIO 异步通信模板服务端

    JAVA NIO 异步通信模板服务端

    java NIO 中文版

    讲解了 JavaIO 与 JAVA NIO区别,JAVA NIO设计理念,以及JDK中java NIO中语法的使用

    java nio中文版

    java NIO是 java New IO 的简称,在 jdk1.4 里提供的新 api 。 Sun 官方标榜的特性如下: – 为所有的原始类型...– 提供多路 (non-bloking) 非阻塞式的高伸缩性网络 I/O 。 本文档将围绕这几个特性进行学习和介绍。

    Java NIO 中文 Java NIO 中文 Java NIO 中文文档

    Java NIO 深入探讨了 1.4 版的 I/O 新特性,并告诉您如何使用这些特性来极大地提升您所写的 Java 代码的执行效率。这本小册子就程序员所面临的有代表性的 I/O 问题作了详尽阐述,并讲解了 如何才能充分利用新的 I/O ...

Global site tag (gtag.js) - Google Analytics