网络编程
Carl_Hugo
Knowledge is Power
展开
-
网络编程基础(BIO/NIO)
网络编程Socket网络编程(基础篇)传统的BIO编程Socket又称为套接字,应用程序通过套接字向网络发出请求或者应答网络请求。 Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功是,应用程序两端会产生一个socket实例,操作这个实例完成所需的会话。对于一个网络连接来说,套接字是平等的,不因为原创 2017-04-14 22:31:16 · 442 阅读 · 0 评论 -
Netty简介
Netty Netty是基于Java NIO的网络应用框架。 Netty是一个NIO client-server(客户端-服务器)框架,使用Netty可以快速开发网络应用,例如服务器和客户端协议。Netty提供一种新的方式来开发网络应用程序,这种新的方式是的它很容易使用和有很强的扩展性。 Netty的内部实现是复杂的,但是Netty提供了简单一用的api从网络处理代码中解耦业务逻辑。原创 2017-05-14 22:10:16 · 753 阅读 · 0 评论 -
Netty编解码技术
Netty编解码技术编解码技术,说白了就是java序列化技术,序列化目的就两个,第一进行网络传输,第二对象持久化。 虽然可以使用java进行对象序列化,netty去传输,但是java序列化的硬伤太多,比如java序列化没法跨语言、序列化后码流太大、序列化性能太低等等。。 主流的编解码框架: - JBoss的Marshalling包 - google的Protobuf - 基于Protobu原创 2017-05-14 22:29:43 · 483 阅读 · 0 评论 -
Netty中TCP粘包拆包问题
Netty中TCP粘包拆包问题熟悉tcp编程的可能都知道,无论是服务器还是客户端,当我们读取或发送数据的时候都需要TCP底层的粘包拆包机制。 TCP是一个流协议,所谓流就是没有界限的遗传数据。大家可以想象一下河里的水就好比数据,他们是练成一片的没有分界线,TCP底层并不了解上层的业务数据具体的含义,它会根据TCP缓冲区的实际情况进行包划分,也就是说,在业务上,我们一个完整的包可能被TCP分成多个包原创 2017-05-14 22:39:55 · 400 阅读 · 0 评论 -
AIO
AIOAIO编程,在NIO基础上引入了异步通道的概念,并提供了异步文件和异步套接字通道的实现。从而在真正意义上实现了异步非阻塞,之前我们学习的NIO只是非阻塞而并非异步。而AIO它不需要通过多路复用器对注册的通道进行轮询操作即可实现异步读写,从而简化了NIO编程模型。也可以称之为NIO2.0,这种模式才真正属于我们异步非阻塞的模型。 AsynchronousServerSocketChannel原创 2017-05-09 11:07:31 · 315 阅读 · 0 评论