【计网 Socket编程】 中科大郑烇老师笔记 (九)

news2025/1/18 4:29:03

目录

  • 0 引言
  • 1 Socket是什么?是网络的一个层次?是一个协议?
  • 2 Socket编程
    • 2.1 TCP Socket编程
      • 2.1.2 基本概念
      • 2.1.1 一般步骤
    • 2.2 UDP Socket编程
  • 3 TCP Socket编程 实战

请添加图片描述

  • 🙋‍♂️ 作者:海码007
  • 📜 专栏:计算机四大基础专栏
  • 📜 其他章节:网络快速入门系列、计网概述、计网应用层详解、计网Web和HTTP、计网FTP、计网EMail、计网DNS、计网P2P
  • 💥 标题:【计网 Socket编程】详解 中科大郑烇老师笔记 (九)
  • ❣️ 寄语:书到用时方恨少,事非经过不知难。
  • 🎈 最后:文章作者技术和水平有限,如果文中出现错误,希望大家能指正

0 引言

🎈正式进入Socket的学习,学习完Socket的相关知识后,对以后得网络开发会更加得心应手。🎈

先简单回顾一下 TCP/IP 网络层次模型:

在这里插入图片描述

1 Socket是什么?是网络的一个层次?是一个协议?

  • 套接字(Socket)是在应用层和传输层之间的一个接口,用于实现网络通信。它并不属于计算机网络的特定层次,而是在网络编程中使用的一种编程接口。

在这里插入图片描述

  • 套接字本身并不是一种协议,而是通过网络传输层协议(如TCP或UDP)来实现数据的传输。套接字提供了一组标准的函数接口,使得应用程序能够方便地进行网络通信操作,而不需要关注底层协议的细节。
  • 一个Socket是一对IP地址和端口。Socket可以看成在两个程序进行通讯连接中的一个端点,一个程序将一段信息写入Socket中,该Socket将这段信息发送给另外一个Socket中,使这段信息能传送到其他程序中。你可以这么理解:socket是进程之间用来对话的中间层工具。

2 Socket编程

应用进程使用传输层提供的服务才能够交换报文,实现应用层协议,实现应用。
两个应用进程需要借助 Socket API 使用传输层向应用层提供的传输服务来实现报文的交换。

TCP(传输控制协议)和 UDP(用户数据报协议)是两种常用的网络传输协议,它们在套接字编程中使用不同的方式进行网络通信。

  • TCP Socket 使用 TCP 协议提供可靠的、面向连接的、字节流的服务,适用于需要确保数据完整性和顺序的应用场景。
  • UDP Socket 使用 UDP 协议提供不可靠(数据UDP数据报)、无连接的服务,适用于实时性要求较高、数据丢失可接受的应用场景。

2.1 TCP Socket编程

2.1.2 基本概念

套接字:应用进程与端到端传输协议(TCP或UDP)之间的门户
TCP服务:从一个进程向另一个进程可靠地传输字节流
在这里插入图片描述

2.1.1 一般步骤

使用TCP Socket编程,客户端和服务器端需要分别进行以下操作:

  • 客户端
    1. 创建一个TCP套接字对象
    2. 连接到服务器:使用套接字对象的connect函数,指定服务器IP地址端口,发起与服务器的连接请求。
    3. 进行数据交换:通过套接字对象的sendreceive函数,向服务器发送数据并接收服务器的响应数据
    4. 关闭连接:当通信完成或需要关闭连接时,调用套接字的close函数来关闭连接。
  • 服务器端
    1. 创建一个TCP套接字对象
    2. 绑定地址和端口:将套接字绑定到服务器的本地IP地址和端口上。
    3. 监听连接请求:调用套接字的listen函数,将套接字置于监听状态,等待客户端的连接请求
    4. 接受连接:当有客户端发起连接请求时,调用套接字的accept函数来接受连接,创建一个新的套接字对象,用于与该客户端进行通信
    5. 进行数据交换:通过新创建的套接字对象的sendreceive函数,与客户端进行数据的发送和接收操作。
    6. 关闭连接:当通信完成或需要关闭连接时,调用套接字的close函数来关闭连接。

需要注意的是,客户端和服务器端的具体实现方式会因所使用的编程语言和套接字接口的不同而有所差异。以上是一般情况下的操作流程,具体的实现细节可能会有所不同。

2.2 UDP Socket编程

使用UDP Socket编程,客户端和服务器端需要分别进行以下操作:

  • 客户端:
    1. 创建一个UDP套接字对象
    2. 发送数据:通过套接字对象的send to函数,将数据发送给服务器的IP地址和端口。
    3. 接收响应数据:通过套接字对象的recvfrom函数,接收服务器发送回来的响应数据。
    4. 关闭套接字:当通信完成或需要关闭套接字时,调用套接字的close函数来关闭套接字。
  • 服务器端:
    1. 创建一个UDP套接字对象
    2. 绑定地址和端口:将套接字绑定到服务器的本地IP地址和端口上。
    3. 接收数据:通过套接字对象的recvfrom函数,接收来自客户端的数据。
    4. 处理请求并发送响应:根据接收到的数据进行相应的处理,并通过套接字对象的send to函数,将响应数据发送给客户端的IP地址和端口。
    5. 关闭套接字:当通信完成或需要关闭套接字时,调用套接字的close函数来关闭套接字。

需要注意的是,UDP套接字编程的特点是无连接、不可靠,因此在数据交换过程中可能会存在数据丢失或乱序的情况。而TCP套接字编程是基于连接的、可靠的传输方式。具体的实现方式会因所使用的编程语言和套接字接口的不同而有所差异。以上是一般情况下的操作流程,具体的实现细节可能会有所不同。

3 TCP Socket编程 实战

本文使用QT库实现TCP Socket编程案例

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

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

相关文章

FlinkCDC系列:通过skipped.operations参数选择性处理新增、更新、删除数据

在flinkCDC源数据配置,通过debezium.skipped.operations参数控制,配置需要过滤的 oplog 操作。操作包括 c 表示插入,u 表示更新,d 表示删除。默认情况下,不跳过任何操作,以逗号分隔。配置多个操作&#xff…

塔望食观察丨从“一药难求”看国内退烧药品牌是怎样炼成的

随着新冠疫情防疫的全面放开,感染患者不断增多,市民在未知的恐慌中开启了囤药模式,药店中的“四类药”(退烧、止咳、抗病毒、抗生素类药品)被一抢而空,尤其是以退烧类药物更为短缺,以解热镇痛的…

银河麒麟V10SP1-20200711的mate-indicators进程占用内存过高的解决办法

目录 一、监控异常 二、进程异常 三、解决方法 (一)第一步:先查看操作系统版本 (二)第二步:下载相应版本的补丁包 (三)第三步:升级补丁、重启系统 1. 升级步骤 2. …

正常女人会感染HPV吗?北京劲松医院谭巍主任称取决于这些因素

正常女人会感染HPV吗?答案是肯定的。HPV(人乳头瘤病毒)是一种常见的性传播病毒,它可以通过性接触、接触感染者的个人物品等方式传播。因此,正常女性也有可能会感染HPV病毒。 首先,让我们了解一下HPV病毒。HPV病毒是一种小型DNA病毒&#xf…

windows版本redis如何设置后踢启动和重启计算机之后自动重启redis

1. 进入redis安装目录 D:\softwarePackage\redis\Redis-x64-3.2.100 2. 打开dos窗口 使用以下命令来启动 Redis 服务器,并使其在后台运行 redis-server --service-start 3. 设置重启自启动 打开服务界面 (windowsr 输入 services.msc) 找…

方差的性质

参考了百度百科-验证,自己推导了下,加深印象。 方差的定义 方差写作Var(X),它表示随机变量值和它的期望值之差的平方的期望。 对于离散型随机变量X,方差的计算公式为: 其中,E表示期望的意思。 对于连续型…

MySQL---数据用户管理和索引

DDL:CTEATE DROP ALTER dml:对数据进行管理 update insert into delete truncate dpl:查询语句 select dcl:权限控制语句 grant revoke 数据库用户管理 创建用户 修改用户权限 删除用户 grant要在终端执行 创建用户 cr…

4.多层感知机-2简化版

#pic_center R 1 R_1 R1​ R 2 R^2 R2 目录 知识框架No.1 多层感知机一、感知机1、感知机2、训练感知机3、图形解释4、收敛定理5、XOR问题6、总结 二、多层感知机1、XOR2、单隐藏层3、单隐藏层-单分类4、为什么需要非线性激活函数5、Sigmoid函数6、Tanh函数7、ReLU函数8、多类分…

抽奖之星软件,可设置中奖几率概率

抽奖之星简介 抽奖之星 (www.wsgsoft.net/plds/) 可控制抽奖/抽签的结果。 包括内定、中奖次序、限制范围、修改几率、排除、分组等,详情可安装软件试用。 设置中奖几率 界面如下。界面右边,可选中一些名单,并设置其几率(N倍&a…

HEC-RAS 1D/2D水动力与水环境模拟技术

水动力与水环境模型的数值模拟是实现水资源规划、环境影响分析、防洪规划以及未来气候变化下预测和分析的主要手段。然而,一方面水动力和水环境模型的使用非常复杂,理论繁复;另一方面,免费的水动力和水环境软件往往缺少重要功能&a…

建筑建材物料展示预约小程序的作用

建材物料在工程和家庭中的应用度非常高,涵盖服务与产品,如墙面翻新、刷墙、墙纸等,所谓专业事专业人做,因此建筑建材服务商家需要不断拓展客户进行产品/服务的销售。 而在市场拓展方面,由于当今主流需求者年轻化&…

基于STC12C5A60S2系列1T 8051单片机可编程计数阵列CCP/PCA/PWM模块的PWM(脉冲宽度调制)应用

基于STC12C5A60S2系列1T 8051单片机可编程计数阵列CCP/PCA/PWM模块的PWM(脉冲宽度调制)应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍STC…

超融合数据库:解锁全场景数据价值的钥匙

前言 近日,四维纵横对外官宣已完成上亿元 B 轮融资。作为超融合数据库理念的提出者,三年来 YMatrix 持续在超融合数据库领域中保持精进与迭代,对于超融合数据库在行业、场景中的应用和理解也更为深刻。 本篇文章,我们将基于 YMa…

Qt QStackWidget实现透明化loading弹窗与结果展示

效果: 特点: 1、组件复用,用于工作环境中作为单例组件加载方式,作用全局任何需要进行loading显示的业务逻辑; 2、接口调用简单,只需要调用loading开始,显示成功页面,显示错误页面; 3、按钮业务逻辑只进行隐藏当前loading加载框,可根据自己需要自定义业务逻辑; 4…

用 Milvus 和 NVIDIA Merlin 搭建高效推荐系统

如何搭建一个高效的推荐系统? 简单来说,现代推荐系统由训练/推理流水线(pipeline)组成,涉及数据获取、数据预处理、模型训练和调整检索、过滤、排名和评分相关的超参数等多个阶段。走遍这些流程之后,推荐系…

MyBatis Plus之wrapper用法

一、条件构造器关系 条件构造器关系介绍: 绿色框:抽象类 abstract 蓝色框:正常 class 类,可 new 对象 黄色箭头:父子类关系,箭头指向为父类 wrapper介绍: Wrapper :条件构造抽象类…

技术贴 | 一文带你走进统计信息模型

一、简介 数据库中的“统计信息”是一个描述数据库中表和列信息的数据集合。优化器代价模型 (OptimizerCost Model) 依赖于查询中涉及到的表、列、谓词等对象的统计信息来选取计划,优化器可以利用统计信息来优化计划的选择,所以统计信息是代价模型中选取…

微信开放平台账号

微信开放平台账号是用于注册APP端用的微信分享、登陆、支付等功能接口的账号,在制作APP的过程中非常重要。通过微信开放平台,开发者可以接入微信支付、微信登录等功能,从而为APP提供更多样化的服务。 微信开放平台账号管理权限包括创建开放平…

智能井盖传感器推荐,万宾科技助力城市信息化建设

随着科技产品更新换代进程加快,人工智能在人们日常生活之中逐渐普及开来,深入人们生活的方方面面,影响城市基础设施建设工程。例如在大街小巷之中的井盖作为城市基础建设的一个重要部分,一旦出现松动倾斜或凸起等异常问题&#xf…

Linux 中如何修改终端提示符颜色?

哈喽大家好,我是咸鱼 我们知道默认情况下,Linux 终端提示符都是简单的黑白色、 这种黑白提示一方面看久了容易视觉疲劳,另一方面由于没有高亮显示,看着很不方便,视觉体验极差 所以我们需要修改我们的终端显示颜色&a…