【JavaEE】网络编程(网络编程基础、Socket套接字)

一、网络编程基础

1.1、什么是网络编程?

网络编程,指网络上的主机,通过不同的进程,以编程的方式实现网络通信(或称为网络数据传输)
注意:我们只要满足进程不同就行;所以即便是同一个主机,只要是不同进程,基于网络来传输数据,也属于网络编程。对于开发来说,在条件有限的情况下,一般也都是在一个主机中运行多个进程来完成网络编程。
但是,我们一定要明确,我们的目的是提供网络上不同主机,基于网络来传输数据资源:
进程A:编程来获取网络资源
进程B:编程来提供网络资源

1.2 网络编程中的基本概念

1.2.1 发送端和接收端

发送端:数据的发送方进程,称为发送端。发送端主机即网络通信中的源主机。
接收端:数据的接收方进程,称为接收端。接收端主机即网络通信中的目的主机。
收发端:发送端和接收端两端,也简称为收发端。

1.2.2 请求和响应

1.2.3 客户端和服务端

服务端:在常见的网络数据传输场景下,把提供服务的一方进程,称为服务端,可以提供对外服务。
客户端:获取服务的一方进程,称为客户端。

对于服务来说,一般是提供:客户端获取服务资源和客户端保存资源在服务端

1.3 常见的客户端服务端模型

二、Socket套接字

2.1 什么是Socket?

我们要使用QQ发送消息,想要真正发这个数据,需要上层协议调动下层协议,应用层调动传输层:传输层给应用层提供一组api,统称为Socket api

2.2 分类

系统提供的socket api主要有两种:
基于UDP的api
基于TCP的api

这两个都是传输层协议,但是差距很大,它们的api也就差别很大

2.3 UDP数据报套接字通信模型

对于UDP协议来说,具有无连接,面向数据报的特征,即每次都是没有建立连接,并且一次发送全部数据报,一次接收全部的数据报

java中使用UDP协议通信,主要基于 DatagramSocket 类来创建数据报套接字,并使用 DatagramPacket 作为发送或接收的UDP数据报。

注意:
使用 DatagramSocket 类创建出来的socket对象对应系统中一个特殊的文件(socket文件),socket文件对象对应网卡,相当于控制网卡的遥控器。
往这个文件里写数据相当于用网卡发送消息
从这个文件里读数据相当于用网卡接收消息

对于一次发送及接收UDP数据报的流程如下:

2.4 TCP流套接字通信模型

相关推荐
ZTLJQ4 小时前
序列化的艺术:Python JSON处理完全解析
开发语言·python·json
2401_891482174 小时前
多平台UI框架C++开发
开发语言·c++·算法
H5css�海秀4 小时前
今天是自学大模型的第一天(sanjose)
后端·python·node.js·php
威联通网络存储4 小时前
某大型制造企业基于威联通 NAS 的海量数据存储与容灾归档实践
网络·nas
88号技师4 小时前
2026年3月中科院一区SCI-贝塞尔曲线优化算法Bezier curve-based optimization-附Matlab免费代码
开发语言·算法·matlab·优化算法
t198751284 小时前
三维点云最小二乘拟合MATLAB程序
开发语言·算法·matlab
m0_726965985 小时前
面面面,面面(1)
java·开发语言
2401_831920745 小时前
分布式系统安全通信
开发语言·c++·算法
xingxin325 小时前
日志文件分析溯源(连接WebShell的IP地址)实验报告
安全·web安全·网络安全·php·文件上传
~无忧花开~5 小时前
React状态管理完全指南
开发语言·前端·javascript·react.js·前端框架