尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Java基础 Day26 - 详解

Java基础 Day26 - 详解
📅 发布时间:2026/6/19 1:53:48

Java基础 Day26 - 详解

一、网络编程简介

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包),连接取消

相关新闻

  • MTK oppoR9m Smart Phone flash Tool 提示 ERROR: STATUS_UNSUPPORT_CTRL_CODE (0xC0010004)
  • Windows Server部署Vue3+Spring Boot项目 - 实践
  • 如何在markdown中插入折叠框

最新新闻

  • 机器学习落地四大致命坑:数据泄露、指标误用、部署不一致、盲目调参
  • 算法优化中的分支预测与流水线设计的技术8
  • 浏览器用户画像分析大屏搭建——从布局到交互
  • OpenProject深度解析:开源项目管理平台的架构设计与企业级实践指南
  • 上海婚姻纠纷律所榜单:五家专业靠谱机构实务能力与服务特色全解析 - 外贸老黄
  • 2026娄底防水补漏靠谱服务商盘点:屋面/厨卫/外墙/地下室渗水维修详解,适配湘中丘陵梅雨高湿防潮防冻甄选指南 - 宅安选房屋修缮

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号