`

netty下载

 
阅读更多
netty下载


package com.zzq.nio.reactor; 
 
import java.io.IOException; 
import java.net.InetSocketAddress; 
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.Iterator; 
 
public class Reactor implements Runnable { 
 
    private ServerSocketChannel serverSocketChannel = null; 
 
    private Selector            selector            = null; 
 
    public Reactor() { 
        try { 
            selector = Selector.open(); 
            serverSocketChannel = ServerSocketChannel.open(); 
            serverSocketChannel.configureBlocking(false); 
            serverSocketChannel.socket().bind(new InetSocketAddress(8888)); 
            SelectionKey selectionKey = serverSocketChannel.register(selector, 
                SelectionKey.OP_ACCEPT); 
            selectionKey.attach(new Acceptor()); 
            System.out.println("服务器启动正常!"); 
        } catch (IOException e) { 
            System.out.println("启动服务器时出现异常!"); 
            e.printStackTrace(); 
        } 
    } 
 
    public void run() { 
        while (true) { 
            try { 
                selector.select(); 
 
                Iterator<SelectionKey> iter = selector.selectedKeys().iterator(); 
                while (iter.hasNext()) { 
                    SelectionKey selectionKey = iter.next(); 
                    dispatch((Runnable) selectionKey.attachment()); 
                    iter.remove(); 
                } 
            } catch (IOException e) { 
                e.printStackTrace(); 
            } 
        } 
    } 
 
    public void dispatch(Runnable runnable) { 
        if (runnable != null) { 
            runnable.run(); 
        } 
    } 
 
    public static void main(String[] args) { 
        new Thread(new Reactor()).start(); 
    } 
 
    class Acceptor implements Runnable { 
        public void run() { 
            try { 
                SocketChannel socketChannel = serverSocketChannel.accept(); 
                if (socketChannel != null) { 
                    System.out.println("接收到来自客户端(" 
                                       + socketChannel.socket().getInetAddress().getHostAddress() 
                                       + ")的连接"); 
                    new Handler(selector, socketChannel); 
                } 
 
            } catch (IOException e) { 
                e.printStackTrace(); 
            } 
        } 
    } 

 
class Handler implements Runnable { 
 
    private static final int READ_STATUS  = 1; 
 
    private static final int WRITE_STATUS = 2; 
 
    private SocketChannel    socketChannel; 
 
    private SelectionKey     selectionKey; 
 
    private int              status       = READ_STATUS; 
 
    public Handler(Selector selector, SocketChannel socketChannel) { 
        this.socketChannel = socketChannel; 
        try { 
            socketChannel.configureBlocking(false); 
            selectionKey = socketChannel.register(selector, 0); 
            selectionKey.interestOps(SelectionKey.OP_READ); 
            selectionKey.attach(this); 
            selector.wakeup(); 
        } catch (IOException e) { 
            e.printStackTrace(); 
        } 
    } 
 
    public void run() { 
        try { 
            if (status == READ_STATUS) { 
                read(); 
                selectionKey.interestOps(SelectionKey.OP_WRITE); 
                status = WRITE_STATUS; 
            } else if (status == WRITE_STATUS) { 
                process(); 
                selectionKey.cancel(); 
                System.out.println("服务器发送消息成功!"); 
            } 
        } catch (IOException e) { 
            e.printStackTrace(); 
        } 
    } 
 
    public void read() throws IOException { 
        ByteBuffer buffer = ByteBuffer.allocate(1024); 
        socketChannel.read(buffer); 
        System.out.println("接收到来自客户端(" + socketChannel.socket().getInetAddress().getHostAddress() 
                           + ")的消息:" + new String(buffer.array())); 
    } 
 
    public void process() throws IOException { 
        String content = "Hello World!"; 
        ByteBuffer buffer = ByteBuffer.wrap(content.getBytes()); 
        socketChannel.write(buffer); 
    } 
分享到:
评论

相关推荐

    netty下载链接.txt

    Netty的学习视频,下载的是百度云地址,比较全面的,从第二章到第十二章,自己也是通过这个学的

    实例:如何使用Netty下载文件

    在本文中,我们将深入探讨如何利用Netty实现文件的下载功能。 文件下载是网络通信中的常见场景,Netty通过其强大的非阻塞I/O模型,可以高效地处理大文件传输。首先,我们需要理解Netty的基本组件,包括Bootstrap...

    netty-netty-4.1.69.Final.tar.gz

    下载并解压“netty-netty-4.1.69.Final”后,开发者通常会找到以下内容: 1. 源代码:包含Netty的所有模块和组件的源代码。 2. JAR文件:编译后的Netty库,用于在项目中引入依赖。 3. 示例:可能包含一些示例代码,...

    跟闪电侠学Netty:Netty即时聊天实战与底层原理-book-netty.zip

    8. **案例分析**:通过实际项目案例,展示Netty在实际场景中的应用,如P2P下载、WebSocket服务等。 9. **扩展应用**:介绍如何将Netty与其他技术结合,如Spring Boot、Docker等,以构建更复杂的应用系统。 10. **...

    Netty 完整依赖的jar包, 你只需要下载netty源码,再添加这些jar就可以编译通过了

    在描述中提到的"只需要下载netty源码,再添加这些jar就可以编译通过了",这意味着你需要获取Netty的源代码仓库,通常可以从GitHub等开源平台获得。源代码包含了Netty的所有模块和组件,可以让你深入了解其内部工作...

    Netty最新jar包

    Netty最新jar包,里面有源码,需要的朋友可以下载。。。

    Netty进阶之路:跟着案例学Netty 完整版.pdf

    《Netty进阶之路:跟着案例学Netty》中的案例涵盖了Netty的启动和停止、内存、并发多线程、性能、可靠性、安全等方面,囊括了Netty绝大多数常用的功能及容易让人犯错的地方。在案例的分析过程中,还穿插讲解了Netty...

    netty 视频,源码讲解,闪电侠netty. mu. ke

    这个视频是闪电侠出品的netty ,主要讲解netty 源码的。百度云盘资源。直接用txt打开就可以了。mu ke 网的。 Netty深入剖析

    netty-netty-4.1.96.Final.tar.gz 官网最新版Netty Project

    Netty 是一个利用 Java 的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的 API 的客户端/服务器框架。 Netty 是一个广泛使用的 Java 网络编程框架(Netty 在 2011 年获得了Duke's Choice Award,见...

    springboot-nettysocketio +netty+activeMq在线客服系统

    springboot +netty+activeMq在线客服系统springboot +netty+activeMq在线客服系统springboot +netty+activeMq在线客服系统springboot +netty+activeMq在线客服系统springboot +netty+activeMq在线客服系统springboot...

    基于netty+websocket+springboot的实时聊天系统项目源码.zip

    2、该资源包括项目的全部源码,下载可以直接使用! 3、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 4、本资源作为“参考资料”如果需要实现其他功能,...

    netty 视频,源码讲解,闪电侠netty

    这个视频是闪电侠出品的netty ,主要讲解netty 源码的。百度云盘资源。直接用txt打开就可以了。

    93个netty高并发教学视频下载.txt

    93个netty高并发全面的教学视频下载,每个视频在400-700M,一到两个小时时长的视频,无机器码和解压密码,下载下来的就是MP4格式视频。点击即可观看学习。下载txt文档,里面有永久分享的连接。包括01_学习的要义;02...

    netty-4.0.41-2016-9-29官网下载

    这个“netty-4.0.41-2016-9-29官网下载”指的是2016年9月29日从Netty官方获取的4.0.41版本的Netty框架。"netty-all-in-one"可能表示这个压缩包包含了Netty框架的所有组件和依赖,方便开发者一次性获取并进行开发。 ...

    Spring Boot 整合 Netty + WebSocket 实时消息推送

    Netty则是一个高性能、异步事件驱动的网络应用程序框架,常用于构建高度可定制的网络服务器。当Spring Boot与Netty结合使用时,可以创建出高效、稳定的实时消息推送系统。 在"Spring Boot 整合 Netty + WebSocket ...

    jboss netty5.0

    Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这里我们关注的是 Netty 的第五个主要版本,即 Netty 5.0。尽管在撰写本文时,Netty 的最新稳定版本是 4.x ...

    基于springcloud+Netty+MQ+mysql的分布式即时聊天系统源码+项目说明(毕业设计).zip

    基于springcloud+Netty+MQ+mysql的分布式即时聊天系统源码+项目说明(毕业设计).zip 1、该资源内项目代码经过严格调试,下载即用确保可以运行! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、...

    基于netty+mqtt3.1.1+springboot+jdk8 实现的 mqtt 服务端跟客户端.zip

    这是一个基于Java技术栈,具体是Netty、MQTT 3.1.1协议、Spring Boot框架和JDK 8实现的MQTT服务器和客户端的项目。这个项目对于学习和实践物联网(IoT)通信以及Java后端开发具有很高的价值,尤其适合作为毕业设计的...

    基于springboot+netty+mybatis+hbase+kafka实现的socket server+源代码+文档说明

    # 基于Netty的socket server ------ ## 介绍 使用Netty分别实现了三个Socket server和一个socket client: &gt; * server1:9099 主要用来跟硬件传感器通信 &gt; * server2:8888/websocket 作为websocket服务端跟网页...

Global site tag (gtag.js) - Google Analytics