Java网络编程
文章平均质量分 95
落英神剑碧海潮生
桃花影落飞神剑,碧海潮生按玉箫
展开
-
HttpClient & RestTemplate
一、Http请求与响应格式请求格式:请求行(包含请求方法(Get、Post等)、URI、Http版本)请求头请求体响应格式:状态行(包含HTTP版本、状态码、描述信息)响应头响应体二、HttpClient1.基本组件HttpClient是apache提供的用于传输HTTP消息的工具包。HttpClient中一些常用的组件:HttpClientBuilder:用于创建Http客户端实例。CloseableHttpClient:表示用于发送请求和接收响应的Http客户端原创 2021-11-24 18:06:05 · 1841 阅读 · 0 评论 -
安全网络通信(SSL&JSSE)
在网络上,信息由源主机发送到目标主机的传输过程中会经过一些其他计算机。当信息进行传播的时候,可以利用工具,将网络接口设置在监听的模式,便可将网络中正在传播的信息截获或者捕获到,从而进行攻击...原创 2021-06-01 13:21:25 · 2425 阅读 · 2 评论 -
客户端协议处理框架
java.net包下提供了一套客户端协议的处理框架,它是在传输层之上,提供了通过的应用层协议处理框架,比如基于这个框架可以实现处理HTTP协议客户端(ye'jiu'sh)原创 2021-05-30 15:29:09 · 325 阅读 · 1 评论 -
CSFramework(二)---会话层和最外层
承接上文CSFramework(一)---通信层的建立,接下来需要定义会话层和最外层的逻辑。这个需要从每一个消息类型说起,上文中NetMessage对象中用一个枚举类表示消息类型。下面是一步一步经过完善后的消息类型的定义:public enum ENetCommand { Who_Are_You, I_am, Ensure_Online, Server_Force_Down, To_One, To_Other, Offline, Out_Of_Room, Request, Resp原创 2020-12-02 17:23:25 · 166 阅读 · 1 评论 -
CSFramework(一)---通信层
CSFramework是一套于客户端/服务器端的通信框架。客户端与服务器端进行完整交流的前提是要有一套应用层协议。本项目将框架分为三层体系:通信层:主要负责客户端/服务器端消息的收发。 会话层:对消息进行解析,按照约定的应用层协议规范进行相应的处理。 最外层(Client/Server):主要给使用者提供一些操作入口。通信层核心类:下面的Communiaction类主要实现一个通信道路上的消息首发,至于具体消息如何处理则交付给会话层处理。public abstract class Com原创 2020-12-02 14:40:16 · 558 阅读 · 1 评论 -
网络编程基础(Socket & ServerSocket)
Socket用法构造Socket Socket() 创建Socket对象,但该构造方法不会建立与服务器的连接 Socket(InetAddress address, intport) 创建Socket对象,并试图连接到指定的服务器上。第一个参数用于封装服务器的IP地址。 Socket(String host, intport) 创建Socket对象,并试图连接到指定的服务器上。第一个参数用于封装服务器的名字。 上面是三个常用的...原创 2020-12-01 20:24:05 · 442 阅读 · 0 评论 -
自定义非阻塞的HTTP服务器
B/S网络架构:B:Browser(浏览器),web客户端。S:Server(服务器),web服务器。与传统的C/S架构相比,两者的应用层协议有所区别。B/S模式使用的是统一的HTTP协议(应用层协议)来交互数据,而传统的C/S是需要自定义应用层协议的。HTTP采用无状态的短连接的通信方式,通常情况下,一次请求就完成了一次数据的交互,通常也对应着一个业务逻辑。完成之后这次连接就断开了。采用这种方式是为了能够服务更多的用户,因为当前互联网应用每天都会处理上亿的用户请求,不可能每个用户访问一次后就一直保原创 2020-08-20 18:26:45 · 752 阅读 · 0 评论 -
NIO整理
NIO简介Java NIO ( New IO 或 Non Blocking IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。传统的IO是单向的。往程序中读取数据需要输入流。从程序中写出数据需要输出流。它是直接面向流的。直接从流中读取和写入数据。NIO是双向的,它是面向缓冲区的。在数据源与目的地之.原创 2020-07-23 00:06:01 · 135 阅读 · 0 评论 -
从BIO到NIO的网络通信
前言同步异步:同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication)同步:在发出一个调用时,在没有得到结果之前,该调用就不返回。一旦调用返回,就得到返回值了。调用者主动等待这个调用的结果。异步:调用在发出之后就直接返回了,没有立刻得到返回结果。在调用发出后,被调用者通过状态、通知来通知调用者,或通过回调函数处理这个调用。I/O通常来说,IO操作包括:对硬盘的读写、对socket的读写以及外设的.原创 2020-07-22 14:49:04 · 195 阅读 · 0 评论 -
资源发现(下篇)
承接上篇:资源注册中心要实现对资源持有者的健康检查,那么他必须有所有已提交过注册的资源持有者节点地址。此处的健康检查是采用定时的方式,去连接请求 资源持有者节点。下面是自己做的一个定时器小工具:public abstract class DiDaDiDa implements Runnable{ private static final long DEFAULT_DELAY = 3000; private long delay; private Object lock; private原创 2020-06-16 23:03:44 · 334 阅读 · 0 评论 -
资源发现(上篇)
首先来浅谈一下服务发现:即何为服务发现?所有服务器(无论是某一种APP的多个服务器,还是不同APP的多个服务器)在启动时,都需要在“注册中心”进行注册;客户端需要从“注册中心”获取它所属APP的服务器(组)的地址信息;从客户端角度看,注册中心起到的作用包含两个:1、是否存在某个APP的服务器;2、获取某个APP服务器(组)的地址信息。所以,从客户端角度,这是一种“服务发现”的机制。当然服务发现有很多妙用。此处就不进行阐述。回归正题,在学习完相关知识之后实现了一个“资源发现”。同样三种原创 2020-06-16 22:32:34 · 469 阅读 · 0 评论 -
RMI技术学习
前言:RMI(Remote Method Invocation,远程方法调用)。通过RMI技术,某一个本地的JVM可以调用存在于另外一个JVM中的对象方法,就好像它仅仅是在调用本地JVM中某个对象方法一样。本地方法的调用:同一进程之间的对象方法的调用。远程方法的调用:不同进程之间的对象方法的调用。RMI技术的核心:1、动态代理技术;2、反射机制;3、网络传递参数;4、网络传递返回值;5、短连接。下面我们来自己实现一个简单的RMI。我整理了一下大致流程图如下:首先说RM原创 2020-06-14 19:19:29 · 719 阅读 · 0 评论