【学习总结|DAY022】Java网络编程

news/2024/12/23 12:11:06 标签: 学习, java, 网络

网络编程是Java开发中非常重要的一环,它允许程序与网络上的其他设备进行数据交互。本文将介绍Java网络编程的基础知识,包括网络编程三要素、UDP和TCP通信协议,以及BS架构的原理。

网络编程三要素

网络通信至少需要三个要素:IP地址、端口号和协议。

  • IP地址:类似于门牌号码,用于标识网络上的设备。
  • 端口号:用于标记计算机设备上运行的应用程序。
  • 协议:规定连接和传输数据的规则。

UDP通信

UDP(用户数据报协议)是一种无连接、不可靠的通信协议。它将数据封装成数据包发送,不保证数据传输的可靠性,但通信效率高,适用于视频直播、语音通话等场景。

UDP通信实现

  • 客户端:创建DatagramSocket对象,使用send方法发送数据包。
  • 服务端:创建DatagramSocket对象并指定端口,使用receive方法接收数据包。

代码示例

java">// UDP客户端
DatagramSocket socket = new DatagramSocket();
String message = "Hello, server!";
InetAddress address = InetAddress.getByName("127.0.0.1");
DatagramPacket packet = new DatagramPacket(message.getBytes(), message.length(), address, 8888);
socket.send(packet);
socket.close();

// UDP服务端
DatagramSocket socket = new DatagramSocket(8888);
byte[] buffer = new byte[1024];
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
socket.receive(packet);
String message = new String(packet.getData(), 0, packet.getLength());
System.out.println("Received message: " + message);
socket.close();

TCP通信

TCP(传输控制协议)是一种面向连接、可靠的通信协议。它通过三次握手建立连接,传输数据进行确认,四次挥手断开连接,确保数据传输的可靠性,但通信效率相对较低,适用于网页浏览、文件下载等场景。

TCP通信实现

  • 客户端:创建Socket对象,连接到服务端,使用getOutputStream方法发送数据,使用getInputStream方法接收数据。
  • 服务端:创建ServerSocket对象,监听端口,使用accept方法接收客户端连接,使用getInputStream方法接收数据,使用getOutputStream方法发送数据。

代码示例

java">// TCP客户端
Socket socket = new Socket("127.0.0.1", 8888);
OutputStream out = socket.getOutputStream();
String message = "Hello, server!";
out.write(message.getBytes());
socket.close();

// TCP服务端
ServerSocket serverSocket = new ServerSocket(8888);
Socket socket = serverSocket.accept();
InputStream in = socket.getInputStream();
byte[] buffer = new byte[1024];
int length = in.read(buffer);
String message = new String(buffer, 0, length);
System.out.println("Received message: " + message);
socket.close();
serverSocket.close();

BS架构的原理

BS架构(Browser/Server)是指浏览器/服务端架构。客户端使用浏览器发起请求,服务端按照HTTP协议响应数据,例如:

javascript">HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8

<html>
<head>
<title>Example</title>
</head>
<body>
Hello, World!
</body>
</html>

总结

本文介绍了Java网络编程的基础知识,包括网络编程三要素、UDP和TCP通信协议,以及BS架构的原理。希望读者能够通过本文的学习,掌握Java网络编程的基本技能。

请注意:本文仅为学习笔记,代码示例仅供参考,实际开发中可能需要根据具体情况进行调整。


http://www.niftyadmin.cn/n/5796593.html

相关文章

SAP-ABAP开发学习-面向对象开发ooalv(2)

SAP-ABAP开发学习-面向对象OOALV&#xff08;1&#xff09;-CSDN博客 本文目录 一、类的继承 多态性类继承的实现 二、抽象类 三、最终类 四、接口 五、定义全局对象 一、类的继承 继承的本质是代码重用。当我们要构造一个新类时&#xff0c;无需从零开始&#xff0c;可…

微调 BERT:实现抽取式问答

学习如何使用 Transformers 库微调预训练模型来实现抽取式问答。 本文的思路与 08. 尝试微调 LLM&#xff1a;让它会写唐诗一致&#xff0c;不过这次我们使用 BERT 作为预训练模型进行演示&#xff0c;并进行全量微调而非使用 LoRA。为了更好地解释细节&#xff0c;我们不使用 …

【多维DP】力扣3122. 使矩阵满足条件的最少操作次数

给你一个大小为 m x n 的二维矩形 grid 。每次 操作 中&#xff0c;你可以将 任一 格子的值修改为 任意 非负整数。完成所有操作后&#xff0c;你需要确保每个格子 grid[i][j] 的值满足&#xff1a; 如果下面相邻格子存在的话&#xff0c;它们的值相等&#xff0c;也就是 grid…

【Qt】输入类控件:QLineEdit、QTextEdit、QComboBox、QSpinBox、QDateTimeEdit、QDial、QSlider

目录 QLineEdit 例子&#xff1a; 正则表达式对象、验证器对象 例子&#xff1a; 例子&#xff1a; QTextEdit 例子&#xff1a; QComboBox 例子&#xff1a; QSpinBox 例子&#xff1a; QDateTimeEdit 例子&#xff1a; QDial 例子&#xff1a; QSlider 例子&…

使用Python构建个性化学习管理系统

友友们好! 我的新专栏《Python进阶》正式启动啦!这是一个专为那些渴望提升Python技能的朋友们量身打造的专栏,无论你是已经有一定基础的开发者,还是希望深入挖掘Python潜力的爱好者,这里都将是你不可错过的宝藏。 在这个专栏中,你将会找到: ● 深入解析:每一篇文章都将…

【c++笔试强训】(第四十一篇)

目录 体操队形&#xff08;DFS枚举&#xff09; 题目解析 讲解算法原理 编写代码 ⼆叉树中的最⼤路径和&#xff08;树形dp&#xff09; 题目解析 讲解算法原理 编写代码 体操队形&#xff08;DFS枚举&#xff09; 题目解析 1.题目链接&#xff1a;登录—专业IT笔试面…

Go 语言并发实战:利用协程处理多个接口进行数据融合

高效地处理多个数据源并将其整合为有意义的结果是开发中一项重要的任务。Go 语言&#xff0c;以其强大的并发特性&#xff0c;为我们提供了优雅而高效的解决方案。那么我们探讨一下如何利用 Go 语言的协程&#xff0c;同时调用多个接口获取数据&#xff0c;并将这些数据无缝地合…

YOLOv8目标检测——详细记录使用OpenCV的DNN模块进行推理部署C++实现

概述 在之前博客中有介绍YOLOv8从环境安装到训练的完整过程&#xff0c;本节主要介绍OpenCV DNN的原理以及使用其进行推理加速&#xff0c;使用C语言来实现。 https://blog.csdn.net/MariLN/article/details/143924548?spm1001.2014.3001.5501 1. DNN OpenCV 是一个用于计算…