Java基础 Day26 - 详解

news/2025/10/5 22:22:34/文章来源:https://www.cnblogs.com/lxjshuju/p/19127118

一、网络编程简介

1、概念

网络编程指在网络通信协议下,不同计算机上运行的程序,进行数据传输

2、软件架构

(1)CS架构(客户端和服务端)

在用户本地有一个客户端程序,在远程有一个服务器端程序

(2)BS架构(浏览器和服务端)

只需要浏览器,用户通过不同的网址,客户访问不同的服务器端程序

微信小程序属于BS架构

二、网络编程三要素

1、IP

(1)简介

Internet Protocol,是互联网协议地址,也称IP地址

上网设备在网络中的地址,是唯一的

是设备在网络中的唯一标识

有 IPv4 和 IPv6

域名通过 DNS 服务器解析为 IP

(2)IPv4 的地址分类形式

公网地址(万维网使用) 和私有地址(局域网使用)

192.168. 开头的就是私有地址,范围即为192.168.0.0~192.168.255.255

专门为组织机构内部使用,以此节省IP

(3)特殊 IP 地址

127.0.0.1,也可以是localhost,是回送地址,也称本地回环地址,也称本机IP,永远只会寻找当前所在本机

(4)常用CMD命令

ipconfig:查看本机IP地址

ping:检查网络是否连通

(5)INetAddress 类

static InetAddress getByName​(String host)

确定主机名称的IP地址

主机名称可以是机器名称,也可以是IP地址

String getHostName​()

获取此 IP 地址的主机名

String getHostAddress​()

返回文本显示中的 IP 地址字符串

2、端口

应用程序在设备中唯一的标识

端口号:由两个字节表示的整数,取值范围:0~65535

其中0~1023之间的端口号用于一些知名的网络服务或者应用

我们自己使用1024及以上的端口号即可

注意:一个端口号只能被一个应用程序使用

3、协议

计算机网络中,连接和通信的规则被称为网络通信协议

常见的协议有UDP、TCP、http、https、ftp等

三、UDP 协议

1、特点

UDP是面向无连接通信协议(没有接收端也能发送)

速度快,有大小限制(一次最多发送64K),数据不安全,易丢失数据

2、收发数据步骤及示例

public class Send {
public static void main(String[] args) throws Exception {
// 1、创建DatagramSocket对象
DatagramSocket socket = new DatagramSocket(8888);
// 如果不指定端口,则随机指定一个
// 2、创建DatagramPacket对象
String message = "Hello World!";
byte[] content = message.getBytes();
DatagramPacket packet = new DatagramPacket(
content,
content.length,
InetAddress.getByName("127.0.0.1"),
9999
);
// 3、发送信息
socket.send(packet);
// 4、释放资源
socket.close();
}
}public class Receive {
public static void main(String[] args) throws Exception {
// 1、创建DatagramSocket对象
DatagramSocket socket = new DatagramSocket(9999);
// 2、创建DatagramPacket对象
byte[] buf = new byte[1024];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
// 3、接收数据
socket.receive(packet);
// 注意:receive方法会阻塞,直到接收到信息后才会往下执行
// 接收到的数据在 packet中
// 4、解析数据
byte[] data = packet.getData();
String msg = new String(data, 0, packet.getLength());
String ip = packet.getAddress().getHostAddress();
System.out.println("from: " + ip);
System.out.println("data: " + msg);
// 5、释放资源
socket.close();
}

四、TCP 协议

1、特点

TCP 协议是面向连接的通信协议(需要服务端响应请求)

速度慢,但没有大小限制,数据安全

2、收发数据步骤及示例

public class Client {
public static void main(String[] args) throws Exception {
// 1、创建Socket对象,指定服务端的IP和端口
Socket socket = new Socket("127.0.0.1",8888);
// 2、获取传输数据的流对象
OutputStream os = socket.getOutputStream();
InputStream is = socket.getInputStream();
// 3、收发数据
os.write("Nice to meet you".getBytes());byte[] data = new byte[1024];
int len = is.read(data);
String msg = new String(data, 0, len);
String ip = socket.getInetAddress().getHostAddress();
System.out.println("from: " + ip);
System.out.println("data: " + msg);// 4、释放资源
socket.close();
}
}public class Server {
public static void main(String[] args) throws Exception {
// 1、创建ServerSocket对象,指定端口
ServerSocket server = new ServerSocket(8888);
System.out.println("waiting for client...");
// 2、相应客户端发送的请求
Socket socket = server.accept();
// 3、获取传输数据的流对象
OutputStream os = socket.getOutputStream();
InputStream is = socket.getInputStream();
// 4、收发数据
byte[] data = new byte[1024];
int len = is.read(data);
String msg = new String(data, 0, len);
String ip = socket.getInetAddress().getHostAddress();
System.out.println("from: " + ip);
System.out.println("data: " + msg);os.write("Nice to meet you too".getBytes());// 5、关流并释放资源
socket.close();
server.close();
}
}

3、细节补充

(1)三次握手

第一次:客户端向服务器发送连接请求(SYN包)并等待服务器确认

第二次:服务器向客户端返回一个响应(SYN包 + ACK包)告诉客户端收到了请求

第三次:客户端向服务器再次发送确认信息(ACK包),连接建立

Tips:第三次握手是为了防⽌失效的连接请求突然传到服务器(如网络延迟的重复SYN包)造成单向连接

(4)四次挥手

第一次:客户端向服务器发送取消连接的请求(FIN包)

第二次:服务器返回一个响应(ACK包)告诉客户端收到了请求

服务器将最后的数据处理完毕

第三次:服务器向客户端发送确认取消连接的消息(FIN包)

第四次:客户端再次发送确认消息(ACK包),连接取消

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/928794.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

14_mklink创建符号链接

Win11中使用mklink创建符号链接完全指南 引言 在Windows 11系统中,文件和文件夹的管理是我们日常使用电脑的重要组成部分。有时候,我们希望能够在不移动实际文件的情况下,让文件或文件夹在多个位置"同时存在&q…

7_如何构建知识图谱

第一步:确定知识图谱的领域和范围 构建知识图谱的第一步是明确定义其目的、覆盖的领域和边界。这一步至关重要,因为它决定了整个项目的方向和复杂度。 1. 确定应用场景和目标问答系统:为特定领域提供智能问答服务 搜…

点双连通分量例题:矿场搭建

洛谷P3225 矿场搭建 据说点双连通分量的题少,而矿场搭建就是其中的一道好题,老师简单讲了一下我也是套板子AC了 题面具体点链接看,大概就是要求在无向图上修最少的救援点使得任意一个点坍塌了之后,剩下的点都能走走…

MTK oppoR9m Smart Phone flash Tool 提示 ERROR: STATUS_UNSUPPORT_CTRL_CODE (0xC0010004)

前言全局说明在使用 SP flash tool 刷机时,提示 ERROR: STATUS_UNSUPPORT_CTRL_CODE (0xC0010004)错误注意:刷机,会丢失用户:照片、聊天等信息资料。请备份基带等信息。请慎重刷机 !!! 注意:刷机,会丢失用户:照…

我开发的 Chrome 插件 SEO Tools Extension 今天上线了

我开发的 Chrome 插件 SEO Tools Extension 今天上线了 10月3日晚上向 Chrome 应用商店提交的浏览器扩展 SEO Tools Extension 今天下午通过审核并上线了。这个插件就是一些常用的 SEO工具集合,帮助站长做好网站SEO优…

Windows Server部署Vue3+Spring Boot项目 - 实践

Windows Server部署Vue3+Spring Boot项目 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", …

WPF ContentControl Content Binding

Install-Package Microsoft.Extensions.DependencyInjection; Install-Package CommunityToolkit.mvvm; <Window x:Class="WpfApp25.Views.MainWin"xmlns="http://schemas.microsoft.com/winfx/2006…

做网站什么程序好东莞互联网公司排名

ArcGIS Pro SDK &#xff08;九&#xff09;几何 3 点 文章目录 ArcGIS Pro SDK &#xff08;九&#xff09;几何 3 点1 构造地图点2 地图点生成器属性3 地图点的相等性4 缩放至指定点 环境&#xff1a;Visual Studio 2022 .NET6 ArcGIS Pro SDK 3.0 1 构造地图点 // 使用生…

南京专业做网站公司地址查公司信息在哪里查

分布式架构中实现全局唯一ID的需求非常常见,业界上也有很多的工具可直接使用。以下总结一下在面试过程中被问到如何使用Redis 实现分布式全局唯一ID的问题 自定义全局唯一ID生成器 @Component public class RedisIdWorker {/*** 开始时间戳*/private static final long BEGIN…

男女生做恶心的网站网站后期维护管理

本帖最后由 神经病的春天 于 2014-9-18 15:36 编辑近来升级了一下主机&#xff0c;这样一来&#xff0c;终于能够拥有USB3.0和SATA3.0接口了&#xff0c;不过本人目前还木有SSD&#xff0c;所以尚无法完全发挥出这些接口的速度优势。 为了测试&#xff0c;上周的时候&#xff0…

学校网站建设责任书衡阳seo网站推广

1. DBoW3库介绍 DBoW3是DBoW2的增强版&#xff0c;这是一个开源的C库&#xff0c;用于给图像特征排序&#xff0c;并将图像转化成视觉词袋表示。它采用层级树状结构将相近的图像特征在物理存储上聚集在一起&#xff0c;创建一个视觉词典。DBoW3还生成一个图像数据库&#xff0c…

To PXS -- Words to be remembered 2025.10.5

To PXS Despite the great distance between us, our hearts still unite as one. The powerful bond of friendship between us will never fade but endure. Looking back at the days and nights we shared togethe…

网站截图怎么做做网站要收订金吗

为了精准、稳定地提取滚动轴承故障特征&#xff0c;提出了基于变分模态分解和奇异值分解的特征提取方法&#xff0c;采用标准模糊C均值聚类(fuzzy C means clustering, FCM)进行故障识 别。对同一负荷下的已知故障信号进行变分模态分解&#xff0c;利用 奇异值分解技术进一步提…

⭐ Unity AVProVideo插件自带播放器 脚本重构 实现视频激活重置功能 - 实践

⭐ Unity AVProVideo插件自带播放器 脚本重构 实现视频激活重置功能 - 实践2025-10-05 21:56 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x:…

dede网站打开慢做采集网站赚钱

旧项目用的 vue3-seamless-scroll 怎么写都不生效&#xff0c;一看源码两年没更新了&#xff0c;不想调试&#xff0c;还是自己写吧&#xff0c;再不济问问GPT都会更快一点 scroll.vue <template><div class"scroll-container" ref"scrollContainerR…

网站做视频的软件营销型网站哪家好

课程背景 2023年&#xff0c;以ChatGPT为代表的接近人类水平的对话机器人&#xff0c;AIGC不断刷爆网络&#xff0c;其强大的内容生成能力给人们带来了巨大的震撼。学术界和产业界也都形成共识&#xff1a;AIGC绝非昙花一现&#xff0c;其底层技术和产业生态已经形成了新的格局…

做损坏文档的网站seo搜索引擎推广

更新Milvus各个组件的配置参数。 调试 您可以在OpenAPI Explorer中直接运行该接口&#xff0c;免去您计算签名的困扰。运行成功后&#xff0c;OpenAPI Explorer可以自动生成SDK代码示例。 ​编辑调试 授权信息 下表是API对应的授权信息&#xff0c;可以在RAM权限策略语句的…

做网站怎么选服务器军队采购网

java中各map中是否可以存储null值情况

linux做网站服务器吗中企动力官网网站

‍ 侯建业 本文由是石科技CIO侯建业撰写并投递参与“数据猿年度金猿策划活动——2023大数据产业年度优秀CIO榜单及奖项”评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 是石科技&#xff08;江苏&#xff09;有限公司成立于2021年&#xff0c;由国家超级计算无锡中心与…

nodejs做网站的弊端网站备案中是什么意思

Title: 非线性最小二乘问题的数值方法 —— 从高斯-牛顿法到列文伯格-马夸尔特法 (I) 文章目录 前言I. 从高斯-牛顿法II. 到阻尼高斯-牛顿法III. 再到列文伯格-马夸尔特法1. 列文伯格-马夸尔特法的由来2. 列文伯格-马夸尔特法的说明说明一. 迭代方向说明二. 近似于带权重的梯度…