- 浏览: 130611 次
- 性别:
- 来自: 深圳
文章分类
最新评论
使用netty小时telnet一把,引入netty-3.2.5.Final.jar
package netty; import java.io.UnsupportedEncodingException; import java.net.InetAddress; import java.net.InetSocketAddress; import java.util.Date; import java.util.concurrent.Executors; import java.util.logging.Level; import java.util.logging.Logger; import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.channel.ChannelEvent; import org.jboss.netty.channel.ChannelFuture; import org.jboss.netty.channel.ChannelFutureListener; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.channel.ChannelPipelineFactory; import org.jboss.netty.channel.ChannelStateEvent; import org.jboss.netty.channel.Channels; import org.jboss.netty.channel.ExceptionEvent; import org.jboss.netty.channel.MessageEvent; import org.jboss.netty.channel.SimpleChannelUpstreamHandler; import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory; import org.jboss.netty.handler.codec.string.StringDecoder; import org.jboss.netty.handler.codec.string.StringEncoder; public class NettyTest { public static void main(String[] args) { ServerBootstrap bootstrap = new ServerBootstrap(new NioServerSocketChannelFactory( Executors.newCachedThreadPool(), Executors.newCachedThreadPool())); bootstrap.setPipelineFactory(new ChannelPipelineFactory() { public ChannelPipeline getPipeline() throws Exception { ChannelPipeline pipeline = Channels.pipeline(); pipeline.addLast("decoder", new StringDecoder()); pipeline.addLast("encoder", new StringEncoder()); pipeline.addLast("handle", new TelnetHandle()); return pipeline; } }); bootstrap.bind(new InetSocketAddress(9999)); System.err.println("the telnet server is started ...."); } } class TelnetHandle extends SimpleChannelUpstreamHandler { private static final Logger logger = Logger.getLogger( TelnetHandle.class.getName()); private StringBuffer buffer = new StringBuffer(); private ChannelFuture future; @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 if(request.endsWith("\r\n")){ response = "Did you say '" + buffer.toString() + "'?\r\n"; future = e.getChannel().write(response); buffer.delete(0, buffer.length()); }else { try { buffer.append(new String(request.getBytes("ISO8859-1"),"UTF-8")); System.err.println(request); System.err.println(new String(request.getBytes("ISO8859-1"),"UTF-8")); } catch (UnsupportedEncodingException e1) { e1.printStackTrace(); } } // We do not need to write a ChannelBuffer here. // We know the encoder inserted at TelnetPipelineFactory will do the conversion. // 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(); } }
发表评论
-
note
2013-11-20 15:38 1013groupadd hadoop useradd hadoo ... -
阻塞队列
2013-10-17 10:15 758import java.io.*; impor ... -
生产者和消费者
2013-10-14 15:58 1import java.util.Stack; ... -
排序代码
2013-10-08 14:17 794import java.util.Arrays; ... -
Spring中的事务传播属性详解
2013-06-07 17:10 972文章不错,转载于:htt ... -
java中byte和int的那些事
2013-05-30 17:50 681java基本数据类型转换,看似简单,可很多人在工作编程中却 ... -
单例?
2013-05-24 22:15 761老是有人喜欢装X的问单例,话说下面是一种最靠谱的答案 ... -
cfx 调用webservice方式
2013-05-24 15:30 6679方式一:通过ClientProxyFactoryBean 调 ... -
Tomcat 配置访问权限
2013-04-08 12:03 1466tomcat貌似有个比较好玩的东西,有时候我们的应用 ... -
ibatis 修改sql文件不用重启服务器
2013-04-07 14:45 0ibatis在开发的时候每次修改都需要重启应用服务器,所以 ... -
apache cxf Client (soupUI)
2013-03-28 11:56 1145public class CxfClientT ... -
xfire
2013-03-27 12:40 0applicationContext.xml ... -
apche cxf
2013-03-27 11:52 0web.xml <servlet> ... -
structs2 漏洞代码
2013-02-01 17:52 0structs2 漏洞 ?('\u0023_ ... -
netty版telnet Server端
2013-02-01 09:13 0package netty; import ja ... -
spring mvc 2.5
2013-01-09 11:05 1228spring mvc使用笔记(基于xml配置文件) 需要三个 ... -
递归求组合?
2012-12-14 14:38 743比如【1,2,3】 获得其全部的排列组合,包括1个数字的 ... -
小试JFreeChart柱状图和饼状图
2012-07-11 20:44 2653闲来无事,就学学报表技术,目前找到一款开源JFreeC ... -
java操作ActiveMQ
2012-07-07 13:47 1075package mq; import javax.jm ... -
java原生RMI测试
2012-07-07 13:42 3061package rmi; import java.rmi.R ...
相关推荐
熟悉下netty 1)使用netty搭建一个服务端程序和一个客户端程序 2)客户端把上个练习的错误日志上传到服务端程序 3)拓展功能,实现定时上传错误日志及可以使用telnet连接服务器手动控制上传错误日志 4)使用多线程...
《Netty实战》这本书是针对Java网络编程框架Netty的一本深入实践教程,旨在帮助读者掌握Netty的核心特性和实际应用。Netty是一款高性能、异步事件驱动的网络应用程序框架,广泛应用于各种分布式系统、微服务架构以及...
《跟闪电侠学Netty:Netty即时聊天实战与底层原理》是一本深入浅出的Netty技术指南,旨在帮助读者掌握Netty框架,并利用它实现即时聊天应用,同时理解其底层工作原理。Netty是Java领域的一款高性能、异步事件驱动的...
《Netty实战》是针对Java开发者的一本技术指南,它深入介绍了如何利用Netty这个高性能、异步事件驱动的网络应用程序框架来构建高效且可扩展的网络应用。Netty不仅简化了网络编程的复杂性,还提供了丰富的特性和组件...
Netty基础,用于学习Netty,参考黑马程序员的netty教程
《Netty进阶之路-跟着案例学Netty》是由知名技术专家李林峰撰写的一本专为Java开发者深入理解Netty框架而准备的书籍。这本书旨在通过实例教学,帮助读者全面掌握Netty的核心特性和实战技巧,提升网络编程的能力。 ...
**Netty 深度解析** Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。它广泛应用于各种领域,如分布式系统、云计算、游戏服务器、大数据传输等。Netty 的设计...
springboot整合 netty做心跳检测 springboot整合 netty做心跳检测 springboot整合 netty做心跳检测 springboot整合 netty做心跳检测 springboot整合 netty做心跳检测 springboot整合 netty做心跳检测 springboot整合...
ChannelHandlerAdapter 4.X版本和5.X版本的差别很大。ChannelRead是属于5.X版本的4.X版本没有这个方法,所以如果要用ChannelRead。可以更换5.X版本的Netty。
Netty (netty-netty-5.0.0.Alpha2.tar.gz)是一个 NIO 客户端服务器框架,可以快速轻松地开发协议服务器和客户端等网络应用程序。它极大地简化和流线了网络编程,例如 TCP 和 UDP 套接字服务器。 “快速和简单”并...
Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。在本文中,我们将深入探讨 Netty 实时通讯的原理与应用,以及如何利用它构建 WebSocket 服务。 WebSocket 是...
Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这个“netty-netty-4.1.69.Final.tar.gz”文件是Netty的最新稳定版本,版本号为4.1.69.Final,它是一个压缩包...
Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。在深入探讨Netty与RocketMQ的关联之前,我们先来详细了解一下Netty的基本概念和核心特性。 Netty的核心设计...
这个“netty官网学习手册中文版”针对的是Netty的3.1版本,虽然现在的Netty已经发展到了5.x版本,但3.1版本的知识仍然具有历史参考价值,特别是对于那些初次接触或需要理解Netty基础概念的开发者来说。 1. **Netty...
- 使用 Telnet 或 Netcat 工具模拟客户端连接,验证服务器端是否能正确接收文件。 - 对传输的大文件进行完整性校验,如计算 MD5 或 SHA 哈希值,确保文件传输无误。 7. **安全考虑** - **身份验证**:为了防止...
netty-socketio-netty-socketio-2.0.6 ,Socket.IO 是一个库,可以在客户端和服务器之间实现低延迟, 双向和基于事件的通信:netty-socketio-netty-socketio-2.0.6.tar.gznetty-socketio-netty-socketio-2.0.6.zip
Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这个压缩包包含的是Netty 4.0.0.CR3版本的相关资源,包括源码、示例以及API文档,对于学习和理解Netty的工作...
Netty 是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这个压缩包包含 `netty-3.2.5.Final.jar` 和 `netty-3.2.5.Final-sources.jar` 两个文件,它们分别代表了...
《深入浅出Netty》是一本专注于讲解Netty框架的编程指南,非常适合初学者入门。Netty是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。这本书通过详实的代码案例,...
Netty (netty-netty-3.10.6.Final.tar.gz)是一个 NIO 客户端服务器框架,可以快速轻松地开发协议服务器和客户端等网络应用程序。它极大地简化和流线了网络编程,例如 TCP 和 UDP 套接字服务器。 “快速和简单”并...