随笔分类 -  nio

摘要:代码:Serverpackage netty.protocol.websocket.server;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.Channel;import io.netty.channel.Cha... 阅读全文
posted @ 2015-06-03 17:37 mjorcen 阅读(1958) 评论(0) 推荐(0) 编辑
摘要:1. WebSocket 协议开发. WebSocket 是 HTML5 开始提供的一种浏览器与服务器间进行全双工通讯的网络技术,WebSocket通信协议于2011年被IETF定为标准 RFC6455 , WebSocket API 被W3C定为标准. 在 WebSocket API中,浏览器... 阅读全文
posted @ 2015-06-03 16:38 mjorcen 阅读(328) 评论(0) 推荐(0) 编辑
摘要:一. HTTP 简介 HTTP(超文本传输协议) 协议是建立在 TCP 传输协议之上的应用层协议,它的发展是万维网协会和 Internet 工作小组和 IETF 合作的结果. HTTP 是一个属于应用层的面向对象的协议,由于其便捷,快速的方式,适用于分布式超媒体信息系统. HTTP 协议的主要特... 阅读全文
posted @ 2015-06-02 01:33 mjorcen 阅读(1941) 评论(0) 推荐(0) 编辑
摘要:一.JBoss Marshalling 简介. JBoss Marshalling 是一个Java 对象序列化包,对 JDK 默认的序列化框架进行了优化,但又保持跟 Java.io.Serializable 接口的兼容,同时增加了一些可调的参数和附件的特性, 这些参数和附加的特性, 这些参数和特性... 阅读全文
posted @ 2015-06-02 00:55 mjorcen 阅读(3291) 评论(0) 推荐(0) 编辑
摘要:package object.server.impl;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.ChannelFuture;import io.netty.channel.ChannelInitializer;... 阅读全文
posted @ 2015-06-01 23:53 mjorcen 阅读(4382) 评论(0) 推荐(0) 编辑
摘要:根据上一篇博文Google Protobuf 使用 Java 版netty 集成 protobuf 的方法非常简单.代码如下:serverpackage protobuf.server.impl;import io.netty.bootstrap.ServerBootstrap;import io.... 阅读全文
posted @ 2015-06-01 22:57 mjorcen 阅读(1026) 评论(0) 推荐(0) 编辑
摘要:一 . Protobuf 的入门 Protobuf 是一个灵活,高效,结构化的数据序列化框架, 相比于 XML 等传统的序列化工具,它更小,更快,更灵活,更简单.Protobuf 支持数据结构化一次可以到处使用.甚至跨语言使用.同通过代码生成工具可以自动生成不同语言版本的源代码,甚至可以在使用不同... 阅读全文
posted @ 2015-06-01 22:48 mjorcen 阅读(12424) 评论(0) 推荐(1) 编辑
摘要:粘包问题的解决策略 由于底层的 TCP 无法理解上层业务数据,所以在底层是无法保证数据包不被拆分和重组的, 这个问题只能通过上层的应用协议栈设计来解决,根据业界主流的协议的解决方案, 可以归纳如下:消息定长, 例如每个报文的大小固定长度200字节,如果不够,空位补齐空格;在包尾部添加回车换行符进行... 阅读全文
posted @ 2015-05-29 18:19 mjorcen 阅读(1138) 评论(0) 推荐(0) 编辑
摘要:简介 TCP 是一个’流’协议,所谓流,就是没有界限的一串数据. 大家可以想想河里的流水,是连成一片的.期间并没有分界线, TCP 底层并不了解上层业务数据的具体含义 ,它会根据 TCP 缓冲区的实际情况进行包得划分,所以在业务上认为,一个完整的包可能会被 TCP 拆分成多个包进行发送 . 也有可能... 阅读全文
posted @ 2015-05-29 16:51 mjorcen 阅读(481) 评论(0) 推荐(0) 编辑
摘要:先啰嗦两句,使用 netty 来搭建服务器程序,可以发现相比于传统的 nio 程序, netty 的代码更加简洁,开发难度更低,扩展性也很好,非常适合作为基础通信框架.下面上代码:Serverpackage time.server.impl;import io.netty.bootstrap.S... 阅读全文
posted @ 2015-05-29 16:11 mjorcen 阅读(357) 评论(0) 推荐(0) 编辑
摘要:4.3.4 并发性 选择器对象是线程安全的,但它们包含的键集合不是。通过keys( )和selectKeys( )返回的键的集合是Selector对象内部的私有的Set对象集合的直接引用。这些集合可能在任意时间被改变。已注册的键的集合是只读的。如果您试图修改它,那么您得到的奖品将是一个java.l... 阅读全文
posted @ 2015-01-05 16:06 mjorcen 阅读(192) 评论(0) 推荐(0) 编辑
摘要:选择器,可选择通道和选择键类 现在,您也许还对这些用于就绪选择的Java成员感到困惑。让我们来区分这些活动的零件并了解它们是如何交互的吧。图4-1的UML图使得情形看起来比真实的情况更为复杂了。看看图4-2,然后您会发现实际上只有三个有关的类API,用于执行就绪选择:选择器(Selector) ... 阅读全文
posted @ 2015-01-03 17:08 mjorcen 阅读(710) 评论(0) 推荐(0) 编辑
摘要:管道Pipe java.nio.channels包中含有一个名为Pipe(管道)的类。广义上讲,管道就是一个用来在两个实体之间单向传输数据的导管。管道的概念对于Unix(和类Unix)操作系统的用户来说早就很熟悉了。Unix系统中,管道被用来连接一个进程的输出和另一个进程的输入。Pipe类实现一个... 阅读全文
posted @ 2015-01-03 15:46 mjorcen 阅读(783) 评论(0) 推荐(0) 编辑
摘要:DatagramChannel 最后一个socket通道是DatagramChannel。正如SocketChannel对应Socket,ServerSocketChannel对应ServerSocket,每一个DatagramChannel对象也有一个关联的DatagramSocket对象。不过... 阅读全文
posted @ 2015-01-03 11:13 mjorcen 阅读(2638) 评论(0) 推荐(0) 编辑
摘要:Netty4.x中文教程系列(四) 对象传输 我们在使用netty的过程中肯定会遇到传输对象的情况,Netty4通过ObjectEncoder和ObjectDecoder来支持。 首先我们定义一个User对象,一定要实现Serializable接口:package mjorcen.netty.o... 阅读全文
posted @ 2014-09-26 11:53 mjorcen 阅读(4167) 评论(0) 推荐(0) 编辑
摘要:Netty4.x中文教程系列(四) ChannelHandler 上一篇文章详细解释了Hello World示例的代码。里面涉及了一些Netty框架的基础。 这篇文章用以解释ChannelHandler。笔者本身在以前写过文章ChannelHandler改动及影响和ChannelInitialize... 阅读全文
posted @ 2014-09-26 10:58 mjorcen 阅读(626) 评论(0) 推荐(0) 编辑
摘要:1.HelloServer 详解 HelloServer首先定义了一个静态终态的变量---服务端绑定端口7878。至于为什么是这个7878端口,纯粹是笔者个人喜好。大家可以按照自己的习惯选择端口。当然了。常用的几个端口(例如:80,8080,843(Flash及Silverlight策略文件请求端... 阅读全文
posted @ 2014-09-26 10:38 mjorcen 阅读(667) 评论(0) 推荐(0) 编辑
摘要:"Hello World"的代码固然简单,不过其中的几个重要概念(类)和 Netty的工作原理还是需要简单明确一下,至少知道其是负责什。方便自己以后更灵活的使用和扩展。声明,笔者一介码农,不会那么多专业的词汇和缩写,只能以最简单苍白的话来形容个人的感受和体会。如果您觉得这太不专业,笔者首先只能抱歉。... 阅读全文
posted @ 2014-09-26 10:07 mjorcen 阅读(542) 评论(0) 推荐(0) 编辑
摘要:1.下载并为项目添加Netty框架 1. Netty的包大家可以从Netty官网:http://netty.io/downloads.html下载如图所示: Netty提供了四个个主要版本的框架包给大家下载。3.9版本Final 说明这个版本是3.x版本中最新的版本。final意味着功能不再继续添加... 阅读全文
posted @ 2014-09-25 18:22 mjorcen 阅读(1073) 评论(0) 推荐(0) 编辑
摘要:JavaNIO(NewI/O)的三个属性position、limit、capacity 在缓冲区中,最重要的属性有下面三个,它们一起合作完成对缓冲区内部状态的变化跟踪:capacitypositionlimit position和limit的含义取决于Buffer处在读模式还是写模式。不管Buf... 阅读全文
posted @ 2014-09-25 11:22 mjorcen 阅读(3190) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示