网络编程
程序员的压哨绝杀
热爱技术、讨论生活、关注体育、关心实时、爱打游戏。
展开
-
I/O模型学习笔记
TCP客户同时处理两个输入:标准输入和TCP套接口。它不能单纯阻塞在这两个源中某个特定源的输入,而是应该阻塞在其中任何一个源的输入上。这正是select和poll这两个函数的目的之一。客户阻塞于标准输入调用期间,服务器进程被杀死。服务器TCP虽然正确地给客户TCP发送了一个FIN,但是客户进程正阻塞于从标准输入读入,它将看不到这个EOF,直到套接口读时为止。这样进程需要一种预先告知内核的能...原创 2019-07-09 22:41:16 · 171 阅读 · 0 评论 -
TCP学习笔记
TCP:传输控制协议。是一种面向连接的协议,提供可靠的双全工的字节流,TCP套接口是流套接口的一种,关心确认、超时和重传等具体细节。TCP提供客户和服务器连接,跨该连接与服务器交互数据。提供可靠的双全工的字节流,TCP必须跟踪每个方向数据流的状态信息,TCP提供可靠性,当TCP向另一端发送数据时,要求另一端返回确认。TCP不是100%可靠,它提供的是数据的可靠投递或故障的可靠通知。TC...原创 2019-06-30 23:10:09 · 160 阅读 · 0 评论 -
Nety学习笔记三—Netty线程模型
Reactor单线程模型Reactor单线程模型,是指所有的I/O操作都在同一个NIO线程上面完成。职责如下: 作为NIO服务端,接收客户端的TCP连接; 作为NIO客户端,像服务端发起TCP连接; 读取通信对端的请求或者应答消息; 向通信对端发送消息请求或者应答消息; 由于Reactor模式使用的是异步非阻塞I/O,所有丶I/O操作都不会导致...原创 2019-08-25 22:47:47 · 419 阅读 · 0 评论 -
Netty学习笔记一—Netty基础
Netty 是一个基于NIO的客户、服务器端编程框架, 提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。粘包/拆包问题的解决TCP是一个流的协议,一个完成的包可能会被TCP拆分成多个包进行发送,也可能把多个小包封装成一个大的数据报发送(半包读写问题)。解决方案: 消息定长, 报文大小固定长度,不够空格补全,发送和接收方遵循...原创 2019-08-17 19:38:57 · 186 阅读 · 0 评论 -
Netty学习笔记二—服务端/客户端创建
服务端创建netty服务端创建时序图:关键步骤:一、创建ServerBootstrap实例。此为Netty启动辅助类二、设置并绑定Reactor线程池。 Netty的Reactor线程池是EventLoopGroup,它实际就是EventLoop的数组。EventLoop的职责是处理注册到本线程多路复用器Selector上的Channel,Selector的轮询操作由绑定的...原创 2019-08-18 14:24:25 · 323 阅读 · 0 评论 -
Netty学习笔记四—Netty架构
Netty逻辑架构图Reactor 通信调度层它由一系列辅助类组成,包括 Reactor 线程NioEventLoop 以及其父类、NioSocketChannel/NioServerSocketChannel 以及其父类、ByteBuffer 以及由其衍生出来的各种 Buffer、Unsafe 以及其衍生出的各种内部子类等。该层的主要职责就是监听网络的读写和连接操作,负责将网络层...原创 2019-08-31 14:27:14 · 160 阅读 · 0 评论