
网络编程与Netty
文章平均质量分 78
网络编程与Netty
wanger61
这个作者很懒,什么都没留下…
展开
-
RPC框架项目总结
1. 项目概述该项目实现了一个简易的Rpc框架,通过该框架可以实现和Dubbo类似的远程服务调用功能项目整体主要分为三大模块:服务注册/服务发现模块,网络传输模块,Spring注解模块2. 服务注册/服务发现模块...原创 2021-04-17 13:28:36 · 4097 阅读 · 0 评论 -
【Netty学习总结】三. 核心组件
1. Channel与NIO中的SocketChannel类似,Netty中的Channel也用于处理基本的I/O操作(连接,读写,绑定端口),但在Netty中对Channel进行了重新实现,主要实现类有:NioSocketChannel,NioServerSocketChannel,NioDatagramChannel等通过channel类的API,可以获取网络的连接通道状态,配置参数等2. EventLoopEventLoop是Netty的核心抽象,用于处理连接的生命周期中发生的事件一个Ev原创 2021-04-07 16:02:33 · 168 阅读 · 3 评论 -
【Netty学习总结】二. 引导
Netty通过引导类启动服务器/客户端,以及配置服务器/客户端参数。引导类有两个实现类,BootStrap和ServerBootStrap,分别对应客户端和服务器。1. 客户端BootStrap以下是客户端的一般写法:public class Client { public static void main(String[] args) throws Exception { NioEventLoopGroup group = new NioEventLoopGroup();原创 2021-04-07 15:03:58 · 97 阅读 · 0 评论 -
【Netty学习总结】一. 线程模型
1. 线程模型原创 2021-04-03 18:58:27 · 151 阅读 · 0 评论 -
Java网络编程知识点总结
一. 概述¥1. 同步与异步同步 :两个同步任务相互依赖,并且一个任务必须以依赖于另一任务的某种方式执行。 比如在A->B事件模型中,你需要先完成 A 才能执行B。 再换句话说,同步调用中被调用者未处理完请求之前,调用不返回,调用者会一直等待结果的返回。异步: 两个异步的任务是完全独立的,一方的执行不需要等待另外一方的执行。再换句话说,异步调用中一调用就返回结果不需要等待结果返回,当结果返回的时候通过回调函数或者其他方式拿着结果再做相关事情¥2. 阻塞与非阻塞阻塞: 阻塞就是发起一个请原创 2021-01-10 15:06:08 · 213 阅读 · 1 评论 -
socket.read()的阻塞问题
我们都知道,BIO是同步阻塞的IO方式,当BIO服务器调用accept()和read()方法时,都有可能发生阻塞。下面是一个简易的BIO服务器程序:public class Server { public static void main(String[] args) throws IOException { ServerSocket serverSocket = ne...原创 2020-03-20 10:14:20 · 2886 阅读 · 1 评论 -
手写BIO、NIO、AIO服务器
1.BIOimport java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.ServerSocket;import java.net.Socket;import java.util.co...原创 2020-03-19 16:46:14 · 225 阅读 · 0 评论 -
Java网络编程总结
Socket编程socket是操作系统提供的网络编程接口,他封装了对于TCP/IP协议栈的支持,用于进程间的通信,当有连接接入主机以后,操作系统自动为其分配一个socket套接字,套接字绑定着一个IP与端口号。通过socket接口,可以获取tcp连接的输入流和输出流,并且通过他们进行读取和写入此操作。Java提供了net包用于socket编程,同时支持像Inetaddress,URL等工具类,...转载 2020-03-19 16:09:13 · 148 阅读 · 0 评论 -
Selector.select()无法正确回调的问题
Selector.select()无法正确回调的问题我们都知道socketChannel通过register方法注册到Selector上后,Selector.select()会阻塞住,直到监听的事件发生后,select()会通过Linux的epoll方法回调,并唤醒该线程。现在有这么一个疑问,如果开一个线程去执行Selector.select()方法,当监听的事件发生后,该线程是否会被唤醒?...原创 2020-03-18 19:22:23 · 1148 阅读 · 1 评论