- 浏览: 984233 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (826)
- 硬件 (8)
- 软件 (24)
- 软件工程 (34)
- JAVA (229)
- C/C++/C# (77)
- JavaScript (8)
- PHP (1)
- Ruby (3)
- MySQL (14)
- 数据库 (19)
- 心情记事 (12)
- 团队管理 (19)
- Hadoop (1)
- spring (22)
- mybatis(ibatis) (7)
- tomcat (16)
- velocity (0)
- 系统架构 (6)
- JMX (8)
- proxool (1)
- 开发工具 (16)
- python (10)
- JVM (27)
- servlet (5)
- JMS (26)
- ant (2)
- 设计模式 (5)
- 智力题 (2)
- 面试题收集 (1)
- 孙子兵法 (16)
- 测试 (1)
- 数据结构 (7)
- 算法 (22)
- Android (11)
- 汽车驾驶 (1)
- lucene (1)
- memcache (12)
- 技术架构 (7)
- OTP-Erlang (7)
- memcached (17)
- redis (20)
- 浏览器插件 (3)
- sqlite (3)
- Heritrix (9)
- Java线程 (1)
- scala (0)
- Mina (6)
- 汇编 (2)
- Netty (15)
- libevent (0)
- CentOS (12)
- mongod (5)
- mac os (0)
最新评论
-
kingasdfg:
你这里面存在一个错误添加多个任务 应该是这样的 /** * ...
Quartz的任务的临时启动和暂停和恢复【转】 -
kyzeng:
纠正一个错误,long型对应的符号是J,不是L。
Jni中C++和Java的参数传递 -
zhaohaolin:
抱歉,兄弟,只是留下作记录,方便学习,如果觉得资料不好,可以到 ...
netty的个人使用心得【转】 -
cccoooccooco:
谢谢!自己一直以为虚机得使用网线才可以与主机连接呢。。
主机网卡无网线连接与虚拟机通信 -
yuqilin001:
要转别人的东西,请转清楚点嘛,少了这么多类,误人子弟
netty的个人使用心得【转】
netty是继mina之后一个非常受欢迎的nio网络框架(其实netty的主程就是mina的主程).
其实netty的介绍就不说了,去看项目介绍吧,直接上代码
httpserver启动和配置类
import static org.jboss.netty.channel.Channels.pipeline; import java.net.InetSocketAddress; import java.util.concurrent.Executors; import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.channel.ChannelPipeline; import org.jboss.netty.channel.ChannelPipelineFactory; import org.jboss.netty.channel.Channels; import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory; import org.jboss.netty.handler.codec.http.HttpChunkAggregator; import org.jboss.netty.handler.codec.http.HttpRequestDecoder; import org.jboss.netty.handler.codec.http.HttpResponseEncoder; import org.jboss.netty.handler.stream.ChunkedWriteHandler; /** * 后台管理服务 * * @author javagg * */ public class AdminServer { public static void main(String[] args) { start(8080); } public static void start(int port) { // 配置服务器-使用java线程池作为解释线程 ServerBootstrap bootstrap = new ServerBootstrap(new NioServerSocketChannelFactory(Executors.newCachedThreadPool(), Executors.newCachedThreadPool())); // 设置 pipeline factory. bootstrap.setPipelineFactory(new ServerPipelineFactory()); // 绑定端口 bootstrap.bind(new InetSocketAddress(port)); System.out.println("admin start on "+port); } private static class ServerPipelineFactory implements ChannelPipelineFactory { public ChannelPipeline getPipeline() throws Exception { // Create a default pipeline implementation. ChannelPipeline pipeline = Channels.pipeline(); pipeline.addLast("decoder", new HttpRequestDecoder()); pipeline.addLast("encoder", new HttpResponseEncoder()); //http处理handler pipeline.addLast("handler", new AdminServerHandler()); return pipeline; } } }
handler类
import static org.jboss.netty.handler.codec.http.HttpHeaders.Names.CONTENT_TYPE; import static org.jboss.netty.handler.codec.http.HttpResponseStatus.BAD_REQUEST; import static org.jboss.netty.handler.codec.http.HttpResponseStatus.INTERNAL_SERVER_ERROR; import static org.jboss.netty.handler.codec.http.HttpResponseStatus.OK; import static org.jboss.netty.handler.codec.http.HttpVersion.HTTP_1_1; import java.util.HashMap; import mmo.test.UITestHandle; import org.jboss.netty.buffer.ChannelBuffers; import org.jboss.netty.buffer.DynamicChannelBuffer; import org.jboss.netty.channel.Channel; import org.jboss.netty.channel.ChannelFutureListener; import org.jboss.netty.channel.ChannelHandlerContext; import org.jboss.netty.channel.ExceptionEvent; import org.jboss.netty.channel.MessageEvent; import org.jboss.netty.channel.SimpleChannelUpstreamHandler; import org.jboss.netty.handler.codec.frame.TooLongFrameException; import org.jboss.netty.handler.codec.http.DefaultHttpResponse; import org.jboss.netty.handler.codec.http.HttpRequest; import org.jboss.netty.handler.codec.http.HttpResponse; import org.jboss.netty.handler.codec.http.HttpResponseStatus; import org.jboss.netty.util.CharsetUtil; /** * @author javagg */ public class AdminServerHandler extends SimpleChannelUpstreamHandler { @Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { HttpRequest request = (HttpRequest) e.getMessage(); String uri = request.getUri(); System.out.println("uri:"+uri); HttpResponse response = new DefaultHttpResponse(HTTP_1_1, OK); ChannelBuffer buffer=new DynamicChannelBuffer(2048); buffer.writeBytes("hello!! 你好".getBytes("UTF-8")); response.setContent(buffer); response.setHeader("Content-Type", "text/html; charset=UTF-8"); response.setHeader("Content-Length", response.getContent().writerIndex()); Channel ch = e.getChannel(); // Write the initial line and the header. ch.write(response); ch.disconnect(); ch.close(); } @Override public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) throws Exception { Channel ch = e.getChannel(); Throwable cause = e.getCause(); if (cause instanceof TooLongFrameException) { sendError(ctx, BAD_REQUEST); return; } cause.printStackTrace(); if (ch.isConnected()) { sendError(ctx, INTERNAL_SERVER_ERROR); } } private void sendError(ChannelHandlerContext ctx, HttpResponseStatus status) { HttpResponse response = new DefaultHttpResponse(HTTP_1_1, status); response.setHeader(CONTENT_TYPE, "text/plain; charset=UTF-8"); response.setContent(ChannelBuffers.copiedBuffer("Failure: " + status.toString() + "\r\n", CharsetUtil.UTF_8)); // Close the connection as soon as the error message is sent. ctx.getChannel().write(response).addListener(ChannelFutureListener.CLOSE); } }
发表评论
-
调试jdk中的源码,查看jdk局部变量
2013-06-15 23:30 1009调试jdk中的源码,查看jdk局部变量 2012-04 ... -
Reactor模式和NIO<转>
2013-05-27 14:20 837本文可看成是对Doug Lea Scalable IO in ... -
Eclipse快捷键 10个最有用的快捷键<转>
2013-04-11 23:28 1006Eclipse中10个最有用的快捷键组合 一个Eclip ... -
Lucene 3.6 中文分词、分页查询、高亮显示等
2012-12-09 23:35 17681、准备工作 下载lucene 3.6.1 : htt ... -
Maven实战(九)——打包的技巧(转)
2012-10-12 00:41 897“打包“这个词听起 ... -
基于Maven的web工程如何配置嵌入式Jetty Server开发调试环境(转)
2012-10-12 00:28 8671、首先在web工程的POM文件里添加依赖jar包如下: ... -
轻轻松松学Solr(1)--概述及安装[转]
2012-09-18 14:59 947概述 这段时间对企 ... -
分析Netty工作流程[转]
2012-09-04 19:02 842下面以Netty中Echo的例 ... -
让eclipse在ubuntu下面好看一点
2012-03-27 10:17 880<p> </p> <h1 cla ... -
zookeeper安装和应用场合(名字,配置,锁,队列,集群管理)[转]
2012-01-12 17:59 1612安装和配置详解 本文 ... -
Jakarta-Common-BeanUtils使用笔记[转]
2012-01-10 14:13 1119Jakarta-Common-BeanUtils ... -
一个关于Java Thread wait(),notify()的实用例【转】
2012-01-07 16:05 981///// // ProducerConsume ... -
Java基础:Java中的 assert 关键字解析【转】
2012-01-06 19:50 971J2SE 1.4在语言上提供了 ... -
一篇不错的讲解Java异常的文章(转载)----感觉很不错,读了以后很有启发[转]
2012-01-06 15:02 1215六种异常处理的陋习 ... -
如何解决HP QC(Quality Center)在Windows 7下不能工作的问题
2011-12-26 10:48 1535HP QC(Quantity Center) 是一款不错的测 ... -
JAVA读写文件,中文乱码 【转】
2011-12-19 23:43 2069最近在做HTML静态生成,需要从硬盘上把模版文件的内容读出来。 ... -
Java 6 JVM参数选项大全(中文版)【转】
2011-12-19 19:51 925Java 6 JVM参数选项大全(中文版) 作者 ... -
使用assembly plugin实现自定义打包【转】
2011-12-13 01:58 923在上一篇文章中,讨论到在对maven的机制不熟悉的情况下,为了 ... -
使用maven ant task实现非标准打包[转]
2011-12-13 01:56 1002maven很强大,但是总有些事情干起来不是得心应手,没有使用a ... -
Java日期转换SimpleDateFormat格式大全【转】
2011-12-08 20:22 126124小时制时间 显示: public clas ...
相关推荐
客户端发送16进制给服务端,并行实现socket通道活动状态...netty作为服务器端如何主动的向传感器发送消息,我尝试当每个传感器连接到netty(TCP/IP)时使用一个map把该channelSocket的id和该channelSocket绑定在一起。
Netty 高并发深入浅出学习高并发服务器Netty 高并发深入浅出学习高并发服务器
Springboot、netty实现的http-flv、websocket-flv流媒体服务(可用于直播点播),支持rtsp、h264、h265等、rtmp等多种源,h5纯js播放(不依赖flash),不需要依赖nginx等第三方,低延迟(支持识别h264、aac编码自动...
作为一个学Java的,如果没有研究过Netty,那么你对Java语言的使用和理解仅仅停留在表面水平。 如果你想知道Nginx是怎么写出来的,如果你想知道Tomcat和Jetty是如何实现的,如果你也想实现一个简单的Redis服务器,那...
从测试结果看,Netty性能是非常高的,在所有使用默认配置的情况下,单台服务器能够达到4万次请求解析,作为RPC框架是足够用的。
Netty将java对象作为数据的发送与接收 使用:先运行UserServer,在运行UserClient。成功连接后,服务器发送一个User对象给客户端。输出到客户端控制台 5.第四个示例 com.user_1 Netty将java对象作为数据的发送与...
Netty作为异步事件驱动的高性能基础通信框架,其应用越来越广泛,为了打破传统的http协议那种request—response一请求一响应的数据传输模式自身的限制,时下的bs架构应用不再浏满足于浏览器主动发起通信请求服务器...
使用netty与spring-boot编程游戏服务器。项目结构类似spring-mvc。有一个Dispatch类分发请求到目标类方法 目前。框架集成了redis。mongodb。protocolBuffer。eventBus。并实现一些有用的工具。 mvn clean package ...
修改配置文件项目包含两个独立配置文件,分别为netty-nat | --netty-client | ---- properties.properties |-网络服务器| ---- properties.properties 客户端对应的属性配置: internal.server.port代理程序服务端...
车硕一个轻量级的游戏服务器框架,基于Springboot和Netty,使用Protobuf作为客户端和服务器之间的通信。功能逐步完善中... :face_blowing_a_kiss:目前支持协议: TCP协议Websocket项目依赖:名称为链接JDK1.8 Java...
Netty作为之前及现在不断学习Netty道路上持续集成项目Netty心跳实现客户端及服务端聊天实现完成Netty回声服务器使用WebSocket实现点对点聊天功能WebSocket实现群聊功能及上下线提醒增加Netty UDP协议实现使用第三方...
作为一个NIO client-server框架,Netty 提供了这样的一个间接的解决方法。Netty提供了高层次的抽象来简化TCP和UDP服务器的编程,但是你仍然可以使用底层地 API。
java web项目作为服务器端和客户端进行数据通信。但是常常存在提示Max frame length of 65536 has been exceeded问题。初始化握手对象时指定了maxFramePayloadLength 的长度、以及通过配置netty内置解码器处理数据半...
Netty源码解析第1节 Netty深入剖析·使用Netty作为底层框架的计数·Netty是什么·异步事件驱动框架,用于快速开发高性能服务器和客户端·封装了JD
JavaFX投入设备模拟客户端,辅助工具组件“ Python脚本,基于C#和WPF的可视化配置工具” ,简要介绍如下: Java前端服务器:使用Spring Boot 2.0作为基础框架,使用Netty构造TCP服务器与上万台设备组成的通信,采用...
此外,Netty也广泛应用于分布式系统中,作为基础通信组件被Dubbo、Zookeeper,RocketMQ等分布式开源框架使用。 对于开发者来说,掌握Netty的使用并不复杂。只需要理解并熟练运用ByteBuf、Channel、Pipeline、Event...
slf4fx-netty-服务器SLF4Fx 服务器使用 Netty 而不是 Apache Mina。 最初的是一个框架,允许将客户端的 Flex 日志 API 与服务器端的许多 Java 日志框架集成。 在幕后,它使用 Apache Mina 作为网络层。 本项目在使用...
当并发访问量增大、响应时间延迟变大后, 采用JAVABIO作为服务端的软件只有通过硬件不断的扩容来满足访问量的激 增,它大大增加了企业的成本,随着集群的膨胀,系统的可维护性也面临巨大 的挑战,解决这个问题已经...
java写webapi源码网状 ...作为一个巧妙的副作用,很容易衡量功能测试和回归测试对代码覆盖率的影响。 请参阅我们的了解这如何工作。 当您不编写传统的基于浏览器的 Web 应用程序时,Netty 非常有用。 使用 Netty,