网络 编程
文章平均质量分 69
协议和编码
胡小禾
左手写码,右手写诗。一个混迹在二线厂,爱代码但不想当程序员的打工人
展开
-
网络编程常识
文章目录1、0.0.0.0 表示什么2、1、0.0.0.0 表示什么表示所有的IP地址.比如一个tomcat配置文件中bai,如果监听的IP地址设置了 0.0.0.0 就表示你的这个tomcat服务器监听在本机的所有IP地址上,通过任何一个IP地址都可以访问到.如果本地的IP地址有 192.168.1.10, 172.16.2.10,那么访问你这个tomcat就可以 http://192.168.1.10:8080/http://172.16.2.10:8080/ 都可以访问2、.......原创 2021-02-10 07:04:33 · 759 阅读 · 0 评论 -
Netty(7)PB
文章目录Q:Java的 ObjectEncoder 进行序列化,难道就不是二进制编码了?PB 是一种结构化数据存储格式,适合结构化数据串行化,或者说 序列化,适合RPC和存储。使用步骤:写 ,.proto ,pb编译,生成 .java;PB编码,并传输;对端收到包,PB解码,处理业务。...原创 2021-04-24 23:10:03 · 245 阅读 · 0 评论 -
Netty(6)粘包拆包
文章目录一、为何有粘包、拆包二、一、为何有粘包、拆包TCP面向连接、面向流,提供可靠服务。收发两端总是要有成对的Socket,发送端为了将多个包合成一个包以提高效率,使用了Nagle算法。如此,接收端 难以分辨出完整的包了。因为,面向流的的通信是没有消息保护边界的。TCP没有消息保护边界,需要在接收端处理消息边界问题,这就涉及到所谓的拆包问题了。二、...原创 2021-04-24 23:39:02 · 91 阅读 · 0 评论 -
Netty(5)出入站
文章目录一、Netty ChannelHanlder二、`ChannelPipeline`三、Codec3.1 ByteToMessageDecoder解码器3.2 写一个demo一、Netty ChannelHanlderNetty组件包括了 Channel ChannelHanlder EventLoop ChannelPipeline等。其中,Netty 的ChannelHandler是处理出入站数据应用程序逻辑的实现者。常见的使用姿势是继承 ChannelInboundHandlerAdapt原创 2021-04-21 09:38:19 · 233 阅读 · 0 评论 -
Netty(4)聊天室 |心跳
文章目录一、群聊系统二、单聊系统【这就是个 demo,实际IM比这复杂N倍 】一、群聊系统实现的核心是在 服务端的handler这里缓存一份Channel:只有这样,服务端才能将一个客户端的消息转给其他客户端。这里使用了 ChannelGroup 这类,看它的doc 说明:A thread-safe Set that contains open Channels and provides various bulk operations on them. Using ChannelGroup,原创 2021-04-24 19:14:21 · 248 阅读 · 0 评论 -
Netty(3)netty demo (DiscardServer、HttpServer)
文章目录一、Netty DiscardServer一、Netty DiscardServer搞一个最简单的 Netty Discard 服务器,它实现了Discard 协议:不管收到啥消息,一概不响应。代码中的注释值得仔细看!!!public class DiscardServer { private int port; public DiscardServer(int port) { this.port = port; } public void run() throws Ex原创 2021-04-10 19:11:00 · 298 阅读 · 0 评论 -
Netty(2)异步
文章目录一、Netty的异步一、Netty的异步calller calls callee , callee 的处理比较耗时,caller 不想死等,于是在 callee 完成之后,需要一种机制让caller 能够拿到调用结果,这个过程就是异步的过程,获取异步结果的方式主要有 回调、通知、状态。这里很好理解;回调,就是 caller calls callee 时,提供一个 callback ;callee 完成处理后,再 调用 这个 callback通知,最典型的就是发个消息状态: cal原创 2021-04-10 22:28:05 · 457 阅读 · 0 评论 -
Netty(1)线程模型【常识】
文章目录一、Zero-Copy(TODO)二、Netty简介三、线程模型3.1 传统IO3.2 Reactor3.3 单Reactor单线程3.4 单Reactor 多线程模型3.5 主从Reactor多线程3.6 小结一下四、Netty线程模型五、一、Zero-Copy(TODO)常见的实现 ZeroCopy 有两种方式:SendFile 和 mmap。SendFile 和 mmap的区别mmap 适合小数据量读写,sendfile 适合大文件传输mmap需要4次上下文切换,3次数据拷贝;原创 2021-04-05 23:34:08 · 803 阅读 · 0 评论 -
Netty(0)核心类
文章目录1、`ChannelHandlerContext Channel Pipeline`三者之间的关系如何?(TODO)2、1、ChannelHandlerContext Channel Pipeline三者之间的关系如何?(TODO)简单说:ChannelHandlerContext 持有 Channel Pipeline的引用;Channel 和 Pipeline 互相持有对方的引用,也就是说 能互相 getXX 获取Pipeline 本质上是个 双向链表(TODO:更深刻的认识?)原创 2021-04-10 18:03:13 · 246 阅读 · 0 评论 -
Netty与NIO
Linux的 网络IO一、简介1、Linux上所有外部设备都抽象为file。 2、对一个文件的读写会调用kernel命令,返回file descriptor (fd); 3、对一个socket的读写会调用kernel命令,返回socketfd 4、描述符实际就是一个数字,指向内核中一个结构体(文件路径、数据区等一些属性)二、Linux 对Socket IO模型的抽象...原创 2018-05-12 23:37:06 · 5267 阅读 · 0 评论 -
Deep inside NIO(DoulLea on NIO)
We dive into the java NIO world ,following the steps of DougLea原创 2021-04-05 19:16:04 · 92 阅读 · 0 评论 -
BIO 伪异步 NIO
一、传统BIO网络编程基本模型Client/Server模型,即两个进程之间的互相通信,服务端提供位置信息(binding IP & Port) ,客户端通过连接操作向服务端监听地址发起连接, 三次握手建立连接,若成功,双方基于Socket通信。传统BIO模型: ServerSocket:绑定IP,启动监听port; Socket:发起连接。成功后,双方通过输入输出流同步阻塞通...原创 2018-05-14 21:21:49 · 286 阅读 · 0 评论 -
JavaNIO selector (7)
Why Use a Selector? Creating a SelectorRegistering Channels with the SelectorSelectionKey’s Interest SetReady SetChannel + SelectorAttaching ObjectsSelecting Channels via a SelectorselectedK...翻译 2018-05-23 16:28:52 · 168 阅读 · 0 评论 -
Java NIO Channel to Channel Transfers(6)
NIO 通道之间数据传输transferFrom()transferTo()假如两个Channel中有一个是FileChannel,NIO允许你将数据从其中一个Channel直接传输到另一个Channel。FileChannel有TransferTo() 、TransferFrom()的API可供使用。TransferFrom()FileChannel.transfrom(...翻译 2018-05-20 17:23:17 · 289 阅读 · 0 评论 -
JavaNIO Scatter\Gather(5)
NIO支持scatter/gather。Scatter/Gather概念适用于从Channel读写数据的场景。分散读(Scattering Read)是指将channel的数据读出写入多个Buffer中的操作。正如字面所表达的,将Channel的数据 读出,并“分散”(Scattering)到多个Buffer中聚集写(Gathering Write)是指将多个Buffer的数据写到同一个c...翻译 2018-05-20 15:40:07 · 209 阅读 · 0 评论 -
Java NIO Buffer(4)
Basic Buffer UsageBuffer Capacity, Position and LimitCapacityPositionLimitBuffer TypesAllocating a BufferWriting Data to a Bufferflip()Reading Data from a Bufferrewind()clear() and compact...翻译 2018-05-18 19:32:06 · 163 阅读 · 0 评论 -
JavaNIO Channel(3)
JavaNIO channels 和 streams相似中带有不同channels是全双工,支持同时读、写数据,streams同一时刻只能读,或者写channels支持异步读写channels总是从buffers 中读写如上所言:程序可以从channel中读取数据到buffer中,也可以从buffer中读数据到channel中Channel Implementation...翻译 2018-05-18 10:47:17 · 239 阅读 · 0 评论 -
Java NIO Overview(2)
Java NIO consist of the following core components: Java NIO由下面三个核心部分组成: 通道 Channels 缓冲 Buffers 多路复用器 SelectorsNIO当然还有更多的类和组件,但在我看来上面三个概念是NIO API的核心了,其余的,比如Pipe、FileLock只是用这三个核心组件联用的工具类而已。因此,在本篇概...翻译 2018-05-18 00:33:11 · 138 阅读 · 0 评论 -
NIO introduction(1)(from Jakob Jenkov)
本系列是NIO基础的译篇,原文地址请戳: http://tutorials.jenkov.com/java-nio/index.htmlJava NIO (新NIO)是JavaIO的替代(从Java1.4 开始)。JavaNIO提供了一种有别的旧的标准IO的新的IO方式。JavaNIO:Channels(通道)和(Buffers)缓冲 在旧IO的API中主要用到字节流、字符流,而在NI...原创 2018-05-18 00:06:30 · 187 阅读 · 0 评论 -
Chapter5 与HTTP协作的web server
Chapter5 与HTTP协作的web server1 虚拟主机虚拟主机(virtual host)::: 一台服务器可以搭建多个Web站点。 对托管服务来说,一台物理机可为客户持有的域名运行各自不同的网站。 一台物理机部署多个应用,IP都相同,由于虚拟主机可寄存多个不同主机名、域名,发送HTTP请求时,必须在Host首部指定主机名或域名的URI。 ...原创 2018-05-12 14:58:56 · 107 阅读 · 0 评论 -
Chapter4 HTTP状态码
Chapter4 HTTP状态码类别: 1、 2XX200 处理成功, GET::请求资源的实体会作为响应返回 HEAD::对应请求资源实体值返回首部204 no content 请求成功,但不允许返回任何实体主体。返回204,浏览器页面不刷新。 一般在只需要client –> server,而对客户端不需要更新内容信息的情况下使用206 partial c...原创 2018-05-12 14:58:23 · 113 阅读 · 0 评论 -
Chapter3 HTTP报文
Chapter3 HTTP报文1 HTTP 报文HTTP报文:::用于HTTP协议交互的信息 HTTP报文= 报文首部(client or server要请求或响应的内容、属性)+报文主体(要被发送的数据) 报文:::HTTP通信中的基本单位,由8位组字节流组成,用HTTP通信传输2 压缩编码服务器端发送的实体内容,指定编码方式后压缩,客户端接收后根据格式解码 ,如g...原创 2018-05-12 14:57:34 · 141 阅读 · 0 评论 -
Chapter2 简单HTTP协议
Chapter2 简单HTTP协议HTTP协议:::适用于客户端和服务器端之间的通信使用HTTP协议通信的同一条线路上的两台计算机,必然一台是客户端,一台是服务器端1 通过请求、响应通信HTTP协议:::必须从客户端开始建立通信,服务器端在没有接受到请求之前不会发送响应 请求报文 响应报文 2 HTTP是无状态的协议基于HTTP协议,每次有新的请求,都...原创 2018-05-12 14:56:24 · 156 阅读 · 0 评论 -
Chapter1 网络基础
Chapter1 网络基础通常使用的网络都是基于TCP/IP协议族的,HTTP是该协议内部的一个子集TCP/IP 的分层应用层 说明了向用户提供应用服务时的通信的活动 TCP/TP预存了各类通用应用服务如FTP协议、DNS服务传输层 提供网络中两台计算机之间的数据和传输 TCP协议、UDP协议网络层 用来处理网络上流动的数据包。包是网络传输的最小单位。规定通过什...原创 2018-05-12 14:55:08 · 199 阅读 · 0 评论