![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络io编程模型
文章平均质量分 58
健康平安的活着
再给我一次重生的机会,我将加倍珍惜,将java事业进行到底。
展开
-
网络I/o编程模型20 netty的编码与解码以及整合log4j
1.客户端发送给服务端的数据会通过pipeline的一系列channeloutboundHandler处理,称之为出站,需要进行编码操作。2.服务端接收客户端的发送的数据会通过pipeline的一系列channelinboundHandler处理,称之为入站,需要进行解码操作。...原创 2022-06-05 19:35:02 · 193 阅读 · 1 评论 -
网络I/o编程模型19 netty的编码与解码
1、数据在网络中传输的都是二进制字节码数据,在发送数据时就需要编码,接收数据时就需要解码。encoder 负责把业务数据转成字节码数据,decoder负责把字节码数据转成业务数据。2.netty常见的解码和编码器StringEncoder 对字符串数据进行编码ObjectEncoder 对java对象进行编码StringDecoder 对字符串进行解码ObjectDecoder 对java对象解析解码但是netty底层使用的仍是java序列化技术,java序列化技术效率不高,体积太大。原创 2022-06-05 16:12:02 · 102 阅读 · 0 评论 -
网络I/o编程模型18 netty通过websocket实现服务,客户端通信
基于websocket的全双工的长连接,实现客户端和服务端之间信息的交互。比如客户端浏览器和服务器会相互感知,比如服务器关闭了,浏览器会感知;同样浏览器关闭了,服务器也会感知。1.服务端2.自定义处理类3. 前端页面4.查询结果 1.服务端 2.页面...原创 2022-06-04 19:09:08 · 337 阅读 · 0 评论 -
网络I/o编程模型14 netty的http协议服务器
一 案例1.1 案例描述1.netty服务器使用6666端口监听,浏览器发送的请求:http://localhost:6666/2.服务器收到消息后,向浏览器发送消息“hello,我是服务器,你在干什么!!!”,并对特定资源进行过滤。1.2 代码1.server端package com.ljf.netty.netty.http;import com.ljf.netty.netty.tcp.NettyTcpServerHandler3;import io.netty.boots原创 2022-05-30 15:05:53 · 133 阅读 · 0 评论 -
网络I/o编程模型9 传统io与Nio传输文件的区别
一 传统IO1.1 传统IO的客户端public class IOClient { public static void main(String[] args) throws IOException { Socket socket = new Socket("localhost", 7001); String fileName = "d:/test-file/P2PR203702_2021-06-29 09-33-26 186.txt"; I原创 2022-05-22 18:56:44 · 138 阅读 · 0 评论 -
网络I/o编程模型8 IO的零拷贝技术
一 传统IO模式1.传统模式:read:把数据从磁盘读取到内核缓冲区,再拷贝到用户缓冲区write:先把数据写入到 socket缓冲区,最后写入网卡设备如下图所示:2.流程:1.用户空间的应用程序通过read()函数,向操作系统发起IO调用,上下文从用户态到切换到内核态,然后再通过 DMA 控制器将数据从磁盘文件中读取到内核缓冲区2.接着CPU将内核空间缓冲区的数据拷贝到用户空间的数据缓冲区,然后read函数调用返回的结果,又会导致上下文从内核态切换到用户态。3.用户空间原创 2022-05-17 11:35:16 · 645 阅读 · 0 评论 -
网络I/o编程模型7 Nio实现聊天室
一 nio实现聊天室1.1 功能描述服务器端:可以检测用户上线、离线,并实现消息的转发功能。客户端:通过channel可以五阻塞发送消息给其它所有用户,同时可以接受其它用户发送的消息(有服务器转发得到)使用NIO聊天系统,实现服务器端和客户端之间的数据非阻塞的简单通讯。1.2 代码1.服务端package com.ljf.netty.nio.chat;import org.omg.Messaging.SyncScopeHelper;import java.io.IOExce原创 2022-05-15 19:11:24 · 424 阅读 · 0 评论 -
网络I/o编程模型6 Nio之Selector以及NIO客户服务通讯
一 selector1.1 介绍 java的NIO,用非阻塞的IO方式,可以用一个线程,处理多个的客户端连接,就会使用到selector(选择器)。 netty的IO线程NIOEventLoop聚合了selector(选择器,也叫多路复用器),可以同时并发处理成百上千各个客户端连接。 当线程从某客户端socket通道进行读写数据时,若没有数据可用时,该线程可以进行其他任务。 只有在连接/通道真正有读写事件发生时,才会进行读写,就大大地减少了系统的开销,并且不必为每个连原创 2022-05-15 12:51:41 · 861 阅读 · 0 评论 -
网络I/o编程模型5 Nio之buffer的操作和常用方法
一 理解buffer的flip方法和clear方法1.1 flip方法1.2 clear方法1.3 代码案例1.代码public class RandomBuffer { public static void main(String[] args) { Random random = new Random(); IntBuffer buffer = IntBuffer.allocate(5); buffer.pu原创 2022-05-14 18:08:03 · 301 阅读 · 0 评论 -
网络I/o编程模型4 NIo之chanel通道实现文件复制
一 各种代码操作案例1.1 向本地文件写数据1.代码package com.ljf.netty.nio;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.nio.ByteBuffer;import java.nio.channels.FileChannel;/** * @ClassName: WriteToLoc原创 2022-05-14 16:37:43 · 392 阅读 · 0 评论 -
网络i/o编程3 NIO
一 NIO1.1 介绍1.NIO:为同步非阻塞。位于java的 java.nio.*包下,NIO三大核心部分:Channel 通道 Buffer 缓冲区:底层使用Unsafe类直接操作内存,Buffer中写入的所有数据jvm都不进行管理,不能被gc回收。 Selector 选择器2.NIO是面向缓冲区的。当数据读取到一个它稍后处理的缓冲区,需要时可在缓存区中前后移动,这就增加了处理过程中的灵活性,使用它可以提供非阻塞式的高伸缩性网络。3.通俗讲NIO的同步非阻塞:NIO是可以做到用一个原创 2022-05-12 22:49:01 · 289 阅读 · 0 评论 -
网络I/O编程2 BIO
一 BIO1.1 BIO特点BIO(blocking i/o): 同步阻塞,务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情就会造成不必要的连接开销。可以通过线程池机制改善。1.2 BIO的工作流程1.服务器启动一个ServerSocket2.客户端启动Socket对服务器进行通信,默认情况下服务器端要对每个客户建立一个线程与之通讯。3.客户端发出请求后,先咨询服务器是否有线程响应,如果没有则会等待,或者被拒绝。4.如原创 2022-05-12 14:08:33 · 297 阅读 · 0 评论 -
网络通信1 AIO 和 BIO和 NIO
一 AIO与BIO与NIO1.常见的网络编程I/O模型有:AIO、BIO、NIO1.1 BIOBIO网络编程模型:Blocking IO即 阻塞IO。服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,也就是1对1的处理请求,如果这个连接不做任何事情就会造成不必要的连接开销。...原创 2022-05-12 07:21:29 · 476 阅读 · 0 评论