简单解释 P2P 技术之 UDP 打洞

P2P 通信最大的障碍就是 NAT(网络地址转换),NAT 使得局域网内的设备也可以与公网进行通讯,但是不同 NAT 下的设备之间通讯将会变得很困难。UDP 打洞就是用来使得设备间绕过 NAT 进行通讯的一种技术。

龙生   18 Jul 2023
View Details

SpringBoot使用WebSocket

1、WebSocket是一种在单个TCP连接上进行全双工通信的协议。
2、WebSocket通信协议于2011年被IETF定为标准RFC 6455,并由RFC7936补充规范,WebSocket API也被W3C定为标准。
3、WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。
4、在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

龙生   17 Jul 2023
View Details

Java实现UDP服务器在局域网中实现与客户端通信

* UDP服务器 * <p> UDP说明: * <p>UDP是无连接的通信协议,本质上不分服务端和客户端,两个段都可以对方当作服务器。 * <p> Java版本的可使用DatagramSocket接口实现,关键函数说明: * <p> .bind(): 表示监听,监听本机端口(任意定义),增加本地地址表明指明本地网卡; * <p> .send(): 表示发送数据,每个发送的数据包都要指明发送目的服务器地址和端口号; * <p> .receive(): 表示接收数据,每个接收数据包都要指明接收源服务器地址和端口号; * <>  笔记本开热点,就是新建独立网卡,组成局域网,局域网内设备可以相互通信,接收发送数据,发送方需要指明地址。 * <p>使用方法: * <p>1.笔记嗯电脑开启局域网: * <p>本机开启WiFi热点,在cmd中ipconfig, 查看本机热点IP,如下: * <p>2. 查看本机局域网IP: * <p>无线局域网适配器 本地连接* 10: * <p> * <p>   连接特定的 DNS 后缀 . . . . . . . : * <p>   本地链接 IPv6 地址. . . . . . . . : fe80::e4xx:93xx:47xx:xxx%4 * <p>   IPv4 地址 . . . . . . . . . . . . : […]

龙生   16 Jul 2023
View Details

Java Socket通信之UDP协议

文章目录 一、什么是网络编程? 二、Socket套接字 流套接字 数据报套接字 原始套接字 三、Java数据报套接字通讯模型 1. Socket UDP模型 2. 常见的API DatagramSocket API DatagramPacket API InetSocketAddress API 四、UDP数据报套接字编程 1. 回显服务器 2.查字典服务器 一、什么是网络编程? 网络编程:指网络上的主机,通过不同的进程,以编程的方式实现网络通信(数据通信本质是网络数据传输),其目的就是为了获取网络资源。 如何来理解呢?我们只需要记住是不同进程就可以。即便是同一台主机,只要是不同进程之间进行传输数据就属于网络编程。但是需要注意的是,一个进程获取资源,另外一个进程提供资源。 发送端和接收端(发送端和接收端只是相对的,只是一次网络数据传输产生数据流之后的概念) 发送端:源主机 接收端:目的主机 收发端:既可以进行发送也可以接收数据 请求和响应 一般来讲,获取一个网络资源,涉及到两次网络数据传输:①请求数据发送 ②响应数据发送 比如,主机A给主机B发送消息之前,会请求主机B与它建立连接,之后主机B返回给它响应(同意建立连接)。 客户端和服务端 服务端:提供服务的一方 客户端:获取服务资源,并且可以保存资源在服务端。 举个栗子:在银行办业务 银行提供存款服务:用户(客户端)保存资源(现金)在银行(服务端) 银行提供取款服务:用户(客户端)获取服务端资源(银行替用户保管的现金) 常见的客户端服务端模型 核心流程: ①Client发送请求到Server ②Server根据请求,执行响应的业务处理 ③Server返回响应,发送业务处理结果到Client ④Client根据响应数据,展示处理结果(展示获取到的资源/保存资源) 二、Socket套接字 Socket套接字:用于网络通信的技术,一般我们使用Socket进行网络程序开发,即网络编程。 其主要针对传输层协议划分为三类:流套接字、数据报套接字、原始套接字。 流套接字 使用传输层TCP协议; TCP:即Transmission Control Protocol(传输控制协议),传输层协议。 以下为TCP的特点: 有连接(eg. 打电话要先拨号建立连接) 可靠传输(发送方能知道对方是否收到) 面向字节流(数据传输是基于IO流,在IO流没有关闭的情况下是无边界的数据,可以进行多次发送,也可以分开多次接收),以字节为基本单位,文件读写也是面向字节流的。 有接收缓冲区,也有发送缓冲区 大小不受限制 全双工(A、B同时发送,即一个socket既能读也能写) 数据报套接字 使用传输层UDP协议; UDP:即User Datagram Protocol(用户数据报协议),传输层协议。 以下为UDP的特点: 无连接 (eg. 发微信,发送数据之前不需要建立连接) 不可靠传输(UDP尽最大努力交付,即不保证可靠交付) 面向数据报(对于数据报来说,传输数据是一块一块的,发送一块数据假如100个字节,必须一次发送,接收也必须一次接收100个字节,而不能分100次,每次接收1个字节。) 有接收缓冲区,无发送缓冲区 大小受限:一次最多传输64k 全双工 原始套接字 原始套接字用于自定义传输层协议,用于读写内核没有处理的IP协议数据。(这不是我们的重点) 面试题:TCP协议和UDP协议的区别 参考:TCP和UDP的区别 ①报头不同 ②协议不同 ③特点不同 三、Java数据报套接字通讯模型 1. Socket UDP模型 操作系统把网络编程的一些相关操作(访问网络核心的硬件设备/网卡驱动等)封装起来了,提供了一组API供开发者使用。 对于UDP协议来讲,具有无连接、面向数据报的特征,即每次都是没有建立连接,一次发送全部数据报一次接受全部数据报。java中使用UDP协议通讯,主要基于DatagramSocket类来创建数据报套接字,并使用DatagramPacket描述一个发送或接收数据报。(DatagramSocket类描述一个socket对象,本质是一个文件描述符,表示网卡设备的文件,通过读写socket文件的方式操作网卡) […]

龙生   16 Jul 2023
View Details

网络:TCP与UDP

IP层之上就是传输层,而传输层比较重要的两个协议:TCP和UDP。对于不从事底层开发的人员来讲,或者对于应用开发的人来讲,最常用的就是这两个协议。

龙生   16 Jul 2023
View Details

Java实现基于UDP协议的网络通信UDP编程

在Java中使用UDP编程,仍然需要使用Socket,因为应用程序在使用UDP时必须指定网络接口(IP地址)和端口号。注意:UDP端口和TCP端口虽然都使用0~65535,但他们是两套独立的端口,即一个应用程序用TCP占用了端口1234,不影响另一个应用程序用UDP占用端口1234

龙生   16 Jul 2023
View Details

Linux权限修改 – 更改文件的拥有者及用户组

chown [-R] 账号名称 文件或目录
chown [-R] 账号名称:用户组名称 文件或目录
chgrp [-R] 用户组名称 文件或目录

龙生   06 Jul 2023
View Details

docker安装nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

龙生   04 Jul 2023
View Details

浅析VO、DTO、DO、PO的概念、区别和用处

VO(View Object):视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。
DTO(Data Transfer Object):数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,我泛指用于展示层与服务层之间的数据传输对象。
DO(Domain Object):领域对象,就是从现实世界中抽象出来的有形或无形的业务实体。
PO(Persistent Object):持久化对象,它跟持久层(通常是关系型数据库)的数据结构形成一一对应的映射关系,如果持久层是关系型数据库,那么,数据表中的每个字段(或若干个)就对应PO的一个(或若干个)属性。

龙生   19 Jun 2023
View Details
1 38 39 40 410