public class Dispacther implements Runnable{ private String host = "127.0.0.1"; private int port = 8080; public final Selector selector; public final ServerSocketChannel serverSocketChannel; public Dispacther() throws IOException { selector=Selector.open(); serverSocketChannel=ServerSocketChannel.open(); InetSocketAddress inetSocketAddress=new InetSocketAddress(this.host,this.port); serverSocketChannel.socket().bind(inetSocketAddress); serverSocketChannel.configureBlocking(false); SelectionKey selectionKey=serverSocketChannel.register(selector, SelectionKey.OP_ACCEPT); selectionKey.attach(new Acceptor(this)); } @Override public void run() { try { while(!Thread.interrupted()){ selector.select(); Set<SelectionKey> selectionKeys= selector.selectedKeys(); Iterator<SelectionKey> it=selectionKeys.iterator(); while(it.hasNext()){ SelectionKey selectionKey=it.next(); dispatch(selectionKey); selectionKeys.clear(); } } } catch (IOException e) { e.printStackTrace(); } } void dispatch(SelectionKey key) { Runnable r = (Runnable)(key.attachment()); if (r != null){ r.run(); } } }
public class Acceptor implements Runnable{ private Dispacther dispacther; public Acceptor(Dispacther dispacther) { this.dispacther = dispacther; } @Override public void run() { try { SocketChannel socketChannel=dispacther.serverSocketChannel.accept(); if(socketChannel!=null) new SocketHandler(dispacther.selector, socketChannel); } catch (IOException e) { e.printStackTrace(); } } }
public class SocketHandler implements Runnable { private SocketChannel socketChannel; private Charset charset = Charset.forName("UTF-8"); private Selector selector; public SocketHandler(Selector selector,SocketChannel socketChannel) throws IOException{ this.socketChannel=socketChannel; this.selector = selector; socketChannel.configureBlocking(false); SelectionKey selectionKey=socketChannel.register(selector, 0); selectionKey.attach(this); selectionKey.interestOps(SelectionKey.OP_READ); selector.wakeup(); } @Override public void run() { try { ByteBuffer buff = ByteBuffer.allocate(1024); String content = ""; while (socketChannel.read(buff) > 0) { socketChannel.read(buff); buff.flip(); content += charset.decode(buff); } if(!"".equals(content)){ System.out.println( " content : " + content); for (SelectionKey key : this.selector.keys()) { Channel targetChannel = key.channel(); if (targetChannel instanceof SocketChannel) { SocketChannel dest = (SocketChannel) targetChannel; dest.write(charset.encode(content)); dest.close(); } } } } catch (IOException e) { e.printStackTrace(); } } }
捐助开发者
在兴趣的驱动下,写一个免费
的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(支持支付宝和微信 以及扣扣群),没钱捧个人场,谢谢各位。
个人主页:http://knight-black-bob.iteye.com/
谢谢您的赞助,我会做的更好!
相关推荐
赠送jar包:reactor-netty-core-1.0.15.jar; 赠送原API文档:reactor-netty-core-1.0.15-javadoc.jar; 赠送源代码:reactor-netty-core-1.0.15-sources.jar; 赠送Maven依赖信息文件:reactor-netty-core-1.0.15....
赠送jar包:reactor-netty-http-1.0.11.jar; 赠送原API文档:reactor-netty-http-1.0.11-javadoc.jar; 赠送源代码:reactor-netty-http-1.0.11-sources.jar; 赠送Maven依赖信息文件:reactor-netty-...
reactor-netty, TCP/HTTP/UDP 客户机/服务器,带有联网的反应器 反应器联网 http://projectreactor.io/docs/netty/release/api/在软件许可证 2.0许可,,,。
赠送jar包:reactor-netty-http-1.0.15.jar; 赠送原API文档:reactor-netty-http-1.0.15-javadoc.jar; 赠送源代码:reactor-netty-http-1.0.15-sources.jar; 赠送Maven依赖信息文件:reactor-netty-...
赠送jar包:reactor-netty-http-1.0.15.jar; 赠送原API文档:reactor-netty-http-1.0.15-javadoc.jar; 赠送源代码:reactor-netty-http-1.0.15-sources.jar; 赠送Maven依赖信息文件:reactor-netty-...
赠送jar包:reactor-netty-core-1.0.15.jar; 赠送原API文档:reactor-netty-core-1.0.15-javadoc.jar; 赠送源代码:reactor-netty-core-1.0.15-sources.jar; 赠送Maven依赖信息文件:reactor-netty-core-1.0.15....
赠送jar包:reactor-netty-core-1.0.11.jar; 赠送原API文档:reactor-netty-core-1.0.11-javadoc.jar; 赠送源代码:reactor-netty-core-1.0.11-sources.jar; 赠送Maven依赖信息文件:reactor-netty-core-1.0.11....
java运行依赖jar包
在做了Reactor Netty需要Java 8或+才能运行。 使用来自或Maven Central存储库的Gradle (仅稳定版本): repositories { // maven { url '...
Netty核心精讲之Reactor线程模型源码分析 Netty核心精讲之Reactor线程模型源码分析
java运行依赖jar包
reactor-netty-0.9.20.RELEASE.jar reactor-netty-core-1.0.15.jar reactor-netty-http-1.0.15.jar
java基于NIO实现Reactor模型源码java基于NIO实现Reactor模型源码java基于NIO实现Reactor模型源码java基于NIO实现Reactor模型源码java基于NIO实现Reactor模型源码java基于NIO实现Reactor模型源码java基于NIO实现...
赠送jar包:reactor-netty-http-1.0.11.jar; 赠送原API文档:reactor-netty-http-1.0.11-javadoc.jar; 赠送源代码:reactor-netty-http-1.0.11-sources.jar; 赠送Maven依赖信息文件:reactor-netty-...
Spring Cloud Gateway是Spring官方基于Spring 5.0,Spring Boot 2.0和Project Reactor等技术开发的网关,Spring Cloud Gateway旨在为微服务架构提供一种简单而有效的统一的API路由管理方式。Spring Cloud Gateway...
netty断线重连机制及心跳,包含客户端和服务端,主要学习怎么重连和发送接收心跳,不满足心跳则关闭管道。
netty 入门Reactor示例
Reactor 模型开发效率上比起直接使用 IO 复用要高,它通常是单线程的,设计目标是希望单线程使用一颗 CPU 的全部资源,但也有附带优点,即每个事件处理中很多时候可以不考虑共享资源的互斥访问。可是缺点也是明显的...
这是一个基于 Reactor 2.0 核心的 Web 框架原型,带有 Netty 和 Servlet 3.1 (TODO) 引擎。 Reactive Streams SPI 被公开(参见 ),并且提供了 Reactor 2.0(参见 )和 RxJava 1.0(参见 )API。 请参阅代码注释中...