<JavaEE> 网络编程 -- 网络编程和 Socket 套接字

目录

一、网络编程的概念

1)什么是网络编程?

2)网络编程中的基本概念

1> 收发端

2> 请求和响应

3> 客户端和服务端

二、Socket套接字

1)什么是“套接字”?

2)Socket套接字的概念

3)Socket分类

1> 针对传输层协议,Socket套接字划分出了哪几个类?

2> 流套接字和数据报套接字特点的对比


一、网络编程的概念

1)什么是网络编程?

网络编程是指在网络环境下的主机,通过不同的进程,以编程的方式实现网络通信或网络数据传输。
基于网络环境下,即使是同一个主机,只要是不同进程间的数据传输,也属于网络编程。

2)网络编程中的基本概念

1> 收发端

发送端是指数据的发送方进程,即网络通信中的源主机。
接收端是指数据的接收放进程,即网络通信中的目的主机。
接收端和发送端并称为收发端。

2> 请求和响应

请求(request)发送请求,以期望获得某些数据。
响应(response)对接收到的请求做出反馈。

3> 客户端和服务端

客户端(client)在网络数据传输环境下,获取服务的一方进程称为客户端。
服务端(server在网络数据传输环境下,提供服务的一方进程称为服务端。
服务端提供的服务包括但不限于为客户端反馈数据、为客户端保存数据。

常见客户端服务端模型:

二、Socket套接字

1)什么是“套接字”?

初见“套接字”这样的翻译,我是觉得相当离谱的,特别是一开始我是这么读的,“套”/“接字”。这就导致我根本无法理解这个词的含义,学习了“套接字”的含义之后,才明白原来是“套接”/“字”。
那么“套接字”究竟是在表达什么?在理解这个词之前,我们先看看另外一个词,“套接管”。
“套接管”是指在两个载体的接口之间套上一根用于连接的管子,这样就可以做到在不考虑载体接口口径的情况下,使载体之间可以有物质交流的路径。比如两根口径不一样的水管,使用“套接管”就可以将两根水管相连,并使水可以流动。
Socket直译是插口/插座的意思,作用是让不同主机之间可以经由网络,通过“数据流”进行数据交互。
由此我们可以发现,Socket的作用与上述的“套接管”作用十分相似,但Socket是一个单词而不是一根管,所以“套接管”,就变成了“套接字”。(极度怀疑这个词的第一个翻译者,应该懂得一些管道相关的知识)
因此,在了解为什么叫“套接字”之后,就觉得这个翻译还是比其它一些翻译好多了。没错说的就是你,“鲁棒性”。不仅是简单粗暴的音译,连使用的字也令人难以理解,离了个大谱。

2)Socket套接字的概念

Socket套接字,是由系统提供的由于网络通信的技术,是基于TCP/IP协议的网络通信基本操作单元。基于Socket套接字的网络程序开发就是网络编程。

Socket API 就可以认为是应用层和传输层之间的交互手段,通过 Socket API 就可以完成不同主机,不同系统之间的网络通信。

3)Socket分类

1> 针对传输层协议,Socket套接字划分出了哪几个类?

主要划分出了“流套接字”和“数据报套接字”
流套接字:使用传输层TCP协议。TCP指Transmission Control Protocol(传输控制协议)。

数据报套接字:使用传输层UDP协议。UDP指User Datagram Protocol(用户数据报协议)。

2> 流套接字和数据报套接字特点的对比

流套接字(TCP)数据报套接字(UDP)说明
有连接无连接在双方通信时是否保存了彼此的关键信息。
可靠传输不可靠传输传输后有无确认是否发送到位。
面向字节流面向数据报以字节流进行传输,还是以数据报为单位进行传输。
有接收缓冲区和发送缓冲区有接收缓冲区,无发送缓冲区
大小不限大小受限,一次传输最多64KB数据流长度不限,而数据报是有长度限制的。
全双工全双工使用一个Socket对象,既能发送数据又能接收数据,称为全双工。

阅读指针 -> 《 UDP 回显服务器 》

<JavaEE> 基于 UDP 的 Socket 通信模型-CSDN博客介绍了UDP协议的Socket相关类,实现了一个基于UDP的回显服务器。https://blog.csdn.net/zzy734437202/article/details/135144212

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

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

相关文章

CVE-2023-49898 Apache incubator-streampark 远程命令执行漏洞

项目介绍 Apache Flink 和 Apache Spark 被广泛用作下一代大数据流计算引擎。基于大量优秀经验结合最佳实践,我们将任务部署和运行时参数提取到配置文件中。这样,带有开箱即用连接器的易于使用的 RuntimeContext 将带来更轻松、更高效的任务开发体验。它…

鸿蒙系列--组件介绍之其他基础组件(上)

上回介绍了基础组件中最常用的组件常用的基础组件,接下来还有其他基础组件 一、Blank 描述:空白填充组件 功能:在容器主轴方向上,具有自动填充容器空余部分的能力。只有当父组件为Row/Column时生效 子组件:无 Blan…

无约束优化问题求解(3):共轭梯度法

目录 4. 共轭梯度法4.1 共轭方向4.2 共轭梯度法4.3 共轭梯度法的程序实现4.4 非二次函数的共轭梯度法 Reference 4. 共轭梯度法 4.1 共轭方向 最速下降法的线搜索采取精确线搜索时,由精确线搜索需要满足的条件:迭代点列 x k 1 x k α k d k x_{k1}…

毅速:3D打印随形冷却水路助力模具行业降本、提质、增效

随着模具行业的不断发展,模具制造的精度和效率已经成为企业核心竞争力的重要组成部分。为了满足市场需求,模具行业一直在寻求新的制造技术和方法。3D打印技术的出现,为模具行业带来了革命性的变革。其中,3D打印随形冷却水路的应用…

基于比较的排序算法总结(java实现版)

目录 什么是基于比较的排序算法 什么是排序算法的稳定性 基础排序算法的稳定性 插入排序法 希尔排序法 冒泡排序法 总结 高级算法的稳定性 快速排序法 堆排序法 归并排序法 总结 注意 什么是基于比较的排序算法 基于比较的排序算法定义:之所以能给元素…

C# NPOI导出datatable----Excel模板画图表

1、创建Excel模板 2、安装NPOI管理包 3、创建工作簿 (XLSX和XLS步骤一样,以XLS为例) IWorkbook workbook null; string time DateTime.Now.ToString("yyyyMMddHHmmss"); string excelTempPath Application.StartupPath "…

论文解读:Informer-AAAI2021年最佳论文

论文背景 应用背景 训练的是历史数据,但预测的是未来的数据,但是历史数据和未来数据的分布不一定是一样的,所以时间序列应用于股票预测往往不太稳定 动作预测: 基于之前的视频中每一帧动作,预测下一帧这个人要做什么…

python之导入.py文件

目录 1、文件结构 2、导入.py文件 2.1同一层内文件夹内的导入 2.2不同层内文件夹内的导入 1、文件结构 Paint_master是一个工程的根目录,忽略一些文件及文件夹后,其文件结构如下: src util ImageUtil.py view BaseAdjustDialog.py MainW…

Sobit:将BRC20资产桥接到Solana ,加速铭文市场的火热

2023 年 1 月份后,比特币 Ordinals 协议出现后为铭文赛道的出现奠定了基础,它以聪为单位将比特币分成份,并在每一聪上攥刻不同的信息以达到非同质化资产的效果,而此后包括 BRC20 在内的诸多采用了 Ordinals 方案的应用不断面向市场…

告别高昂存储,高效灵活管理数据

前言 在当今数字化时代,企业面临着海量数据的挑战,这些数据承载着技术创新和业务发展的重要使命。因此,高效、安全地收集、存储和管理数据成为了企业关注的焦点。对于需要长期储存且低频聚合分析的数据,组织需要更加低成本和便捷…

【EI会议征稿】第三届算法、微芯片与网络应用国际会议(AMNA 2024)

第三届算法、微芯片与网络应用国际会议(AMNA 2024) 2024 3rd International Conference on Algorithms, Microchips and Network Applications 第三届算法、微芯片与网络应用国际会议(AMNA 2024) 将于2024年3月8-10日在中国西安召开, AMNA 2024将围绕 …

2023.12.19 关于 Redis 通用全局命令

目录 引言 Redis 全局命令 SET & GET KEYS EXISTS DEL EXPIRE TTL TYPE redis 引入定时器高效处理过期 key 基于优先级队列方式 基于时间轮方式 引言 Redis 是根据键值对的方式存储数据的必须要进入 redis-cli 客户端程序 才能输入 redis 命令 Redis 全局命令 R…