`
liufei.fir
  • 浏览: 687200 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

netty telnet 应用实例server代码

阅读更多
public class TelnetServer {

    public static void main(String[] args) throws Exception {
        // Configure the server.
        ServerBootstrap bootstrap = new ServerBootstrap(
                new NioServerSocketChannelFactory(
                        Executors.newCachedThreadPool(),
                        Executors.newCachedThreadPool()));

        // Configure the pipeline factory.
        bootstrap.setPipelineFactory(new TelnetServerPipelineFactory());

        // Bind and start to accept incoming connections.
        bootstrap.bind(new InetSocketAddress(8080));
    }
}
public class TelnetServerPipelineFactory implements
        ChannelPipelineFactory {

    public ChannelPipeline getPipeline() throws Exception {
        // Create a default pipeline implementation.
        ChannelPipeline pipeline = pipeline();

        // Add the text line codec combination first,
        pipeline.addLast("framer", new DelimiterBasedFrameDecoder(
                8192, Delimiters.lineDelimiter()));
        pipeline.addLast("decoder", new StringDecoder());
        pipeline.addLast("encoder", new StringEncoder());

        // and then business logic.
        pipeline.addLast("handler", new TelnetServerHandler());

        return pipeline;
    }
}
public class TelnetServerHandler extends SimpleChannelUpstreamHandler {

    private static final Logger logger = Logger.getLogger(
            TelnetServerHandler.class.getName());

    @Override
    public void handleUpstream(
            ChannelHandlerContext ctx, ChannelEvent e) throws Exception {
        if (e instanceof ChannelStateEvent) {
            logger.info(e.toString());
        }
        super.handleUpstream(ctx, e);
    }

    @Override
    public void channelConnected(
            ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception {
        // Send greeting for a new connection.
        e.getChannel().write(
                "Welcome to " + InetAddress.getLocalHost().getHostName() + "!\r\n");
        e.getChannel().write("It is " + new Date() + " now.\r\n");
    }

    @Override
    public void messageReceived(
            ChannelHandlerContext ctx, MessageEvent e) {

        // Cast to a String first.
        // We know it is a String because we put some codec in TelnetPipelineFactory.
        String request = (String) e.getMessage();

        // Generate and write a response.
        String response;
        boolean close = false;
        if (request.length() == 0) {
            response = "Please type something.\r\n";
        } else if (request.toLowerCase().equals("bye")) {
            response = "Have a good day!\r\n";
            close = true;
        } else {
            response = "Did you say '" + request + "'?\r\n";
        }

        // We do not need to write a ChannelBuffer here.
        // We know the encoder inserted at TelnetPipelineFactory will do the conversion.
        ChannelFuture future = e.getChannel().write(response);

        // Close the connection after sending 'Have a good day!'
        // if the client has sent 'bye'.
        if (close) {
            future.addListener(ChannelFutureListener.CLOSE);
        }
    }

    @Override
    public void exceptionCaught(
            ChannelHandlerContext ctx, ExceptionEvent e) {
        logger.log(
                Level.WARNING,
                "Unexpected exception from downstream.",
                e.getCause());
        e.getChannel().close();
    }
}
分享到:
评论

相关推荐

    netty_server实例代码

    我们还将讨论提供的"netty_server"实例代码,这对于初学者理解和实践Netty框架非常有帮助。 首先,让我们了解Netty的基本概念。Netty的核心是其Channel和EventLoop系统。Channel代表网络连接,可以读写数据。Event...

    netty实战教程、netty代码demo

    Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这个实战教程和代码示例是为那些希望深入理解并运用 Netty 的开发者准备的。以下是对 Netty 的详细介绍以及...

    rtmpServer-master_nettyrtmp_rtmp推流_netty开发rtmp_rtmpServer-master

    本项目“rtmpServer-master_nettyrtmp_rtmp推流_netty开发rtmp_rtmpServer-master”是针对RTMP协议开发的一个服务器端实现,它基于强大的Java网络库Netty。以下将详细介绍该服务器的开发背景、功能、核心技术和应用...

    netty实现的聊天代码

    在这个“netty实现的聊天代码”中,我们可以深入理解如何使用 Netty 框架来构建简单的聊天应用。这个 demo 包括了 server 和 client 两部分,都是基于 Java 语言编写的,因此也涉及到了 Java 编程。 首先,让我们从...

    使用Netty进行Android与Server端通信实现文字发送接收与图片上传

    使用netty进行安卓端发送接收文字,并且附带发送图片功能,折腾了几天的netty总算有点眉目了,做下记录。 详细介绍:http://lison.cc/508.html github下载地址:https://github.com/LisonLiou/netty-learning.git

    netty并发服务器实例代码

    在描述中提到的"netty并发服务器实例代码",意味着这个压缩包可能包含了使用Netty框架搭建的一个服务器端应用的源码。通常,这样的服务器会处理大量的并发连接,并且能够高效地处理来自客户端的请求。Netty的非阻塞I...

    netty android Client + server

    在Android平台上,使用Netty可以构建高效、可靠的网络通信应用,尤其是在需要处理大量并发连接时。本项目提供了Android客户端和服务器端的示例,用于演示如何使用Netty实现简单的消息收发功能。 在Android客户端...

    netty http client & server

    Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。在本文中,我们将深入...通过深入理解 Netty 的工作原理和使用技巧,我们可以构建出更加稳定、高效的网络应用。

    netty技术分享ppt+源代码展示

    netty技术分享ppt+源代码展示

    NettyDemo Netty使用实例,对象传递调用

    在本文中,我们将深入探讨Netty在实际应用中的实例——对象传递调用,以及如何解决TCP粘包问题。同时,我们还会讨论Java序列化方案在Netty中的编解码对比。 首先,让我们来看看TCP粘包问题。在TCP协议中,由于其...

    Netty+telnet根据指令定时上传文件

    1)使用netty搭建一个服务端程序和一个客户端程序 2)客户端把上个练习的错误日志上传到服务端程序 3)拓展功能,实现定时上传错误日志及可以使用telnet连接服务器手动控制上传错误日志 4)使用多线程拓展netty服务端...

    Netty中使用WebSocket实现服务端与客户端的长连接通信发送消息示例代码.rar

    Netty中使用WebSocket实现服务端与客户端的长连接通信发送消息示例代码;Netty中使用WebSocket实现服务端与客户端的长连接通信发送消息示例代码;Netty中使用WebSocket实现服务端与客户端的长连接通信发送消息示例代码

    Netty与ActiveMQ的程序代码范例

    在“Netty与ActiveMQ的程序代码范例”中,我们可以预期找到的是如何将这两个强大的工具结合使用的实例。Netty通常用作网络层的基石,处理TCP/IP协议栈中的低级任务,如套接字管理、数据缓冲和高效的I/O操作。而...

    Netty实践学习案例

    6. **性能优化**:通过调整配置和使用最佳实践,可以进一步提升 Netty 应用的性能。示例可能包括如何进行性能测试和优化策略。 7. **线程模型**:Netty 默认使用 NIOEventLoopGroup,示例可能讲解如何配置线程池和...

    netty实现websocket server

    Netty 是一个高性能、异步事件驱动的网络应用程序框架,常用于开发高并发、低延迟的网络服务。在本文中,我们将深入探讨如何使用 Netty 实现 WebSocket 服务器,以及与 Java 客户端进行交互的过程。 WebSocket 协议...

    Netty同步等待数据返回实例代码

    在本文中,我们将深入探讨 Netty 中的同步等待数据返回的实例代码,以及这一机制如何在实际应用中工作。 首先,我们要明白在多线程环境下,同步是为了确保多个线程对共享资源的访问是有序且安全的。在 Netty 中,...

    springboot+netty+mybatis+sqlserver

    标题 "springboot+netty+mybatis+sqlserver" 涉及到的是一个使用Spring Boot、Netty、MyBatis以及SQL Server构建的项目。这个项目可能是一个高性能、轻量级的网络通信应用,利用Spring Boot的便利性和Netty的高效...

    netty-demo实例

    也就是说,Netty 是一个基于NIO的客户,服务器端编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户,服务端应用。Netty相当简化和流线化了网络应用的编程开发过程,例如,...

    Netty_Chat_server_client_src_java.zip_netty_netty html5 chat_sep

    在这个"Netty_Chat_server_client_src_java.zip"压缩包中,包含了一个基于Netty实现的简单聊天应用的源代码,分为服务器(server)和客户端(client)两部分。 首先,我们来看"server"部分。Netty服务器端通常由多个...

    Netty进阶之路-跟着案例学Netty

    最后,实战部分会介绍如何将Netty应用于实际项目,如构建聊天服务器、游戏服务器,甚至是微服务间的RPC框架。这部分内容将帮助读者将理论知识转化为实际生产力。 总的来说,《Netty进阶之路-跟着案例学Netty》是一...

Global site tag (gtag.js) - Google Analytics