当前位置: 首页 > news >正文

《C++高并发服务器笔记——第四章Linux网络编程》

计算机网络等相关知识可以去小林coding进行巩固(点击前往)

《C++高并发服务器笔记——第四章》

  • 4.1、网络结构模式
    • 1.C/S结构
      • ①C/S结构简介
      • ②C/S结构优点
      • ③C/S结构缺点
    • 2.B/S结构
      • ①B/S结构简介
      • ②B/S结构优点
      • ③B/S结构缺点
  • 4.2和4.3、MAC地址、IP地址、端口
    • 1.MAC地址的简介
    • 2.IP地址
      • ①IP地址简介
      • ②IP地址编址方式
      • ③A类IP地址
      • ④B类IP地址
      • ⑤C类IP地址
      • ⑥D类IP地址
      • ⑧子网掩码
    • 3.端口
      • ①简介
      • ②端口类型
  • 4.4、网络模型
    • 1.OSI七层参考模型
    • 2.TCP/IP四层模型
      • ①简介
      • ②四层介绍
  • 4.5、协议
    • 1.简介
    • 2.常见协议
    • 3.UDP协议
    • 4.TCP协议
    • 5.IP协议
    • 6.以太网帧协议
    • 7.ARP协议
  • 4.6和4.7、网络通信的过程
    • 1.封装
    • 2.分用
    • 3.数据经过四层TCP/IP
    • 4.网络通信的过程
    • 5.ARP协议获取MAC物理地址的过程
  • 4.8、socket
    • 1.socket介绍
  • 4.9、字节序
    • 1.简介
    • 2.字节序举例
    • 3.判断电脑存储方式代码
  • 4.10、字节序列转换函数
    • 1.字节序转换函数
    • 2.字节序转换函数有哪些
    • 3.字节序转换函数的使用
  • 4.11、socket地址
    • 1.通用socket地址
    • 2.专用socket地址
  • 4.12、ip地址转换函数
    • 1.IP地址转换(字符串ip-整数,主机、网络字节序的转换)
    • 2.转换函数的代码举例
  • 4.13、TCP通信流程
    • 1.TCP与UDP的区别(传输层协议)
    • 2.TCP通信流程
      • ①服务器端(被动接受连接的角色)
      • ②客户端(主动发起连接)
  • 4.14、socket函数
    • 1.套接字函数有哪些
    • 2.套接字函数介绍
      • ①socket
      • ②bind
      • ③listen
      • ④accept
      • ⑤connect
  • 4.15和4.16、TCP通信实现(本机)
    • 1.TCP通信
      • ①TCP通信(服务端)代码
      • ②TCP通信(客户端)代码
  • 4.17、TCP三次握手
    • 1.TCP三次握手
    • 2.TCP通信具体流程
      • ①三次握手
      • ②服务器客户端进行通信
  • 4.18、TCP滑动窗口
    • 1.滑动窗口的介绍
    • 2.滑动窗口通信的例子
  • 4.19、TCP四次挥手
    • 1.TCP四次挥手
  • 4.20和4.21、多进程实现并发服务器
    • 1.TCP多进程通信并发
      • ①服务端代码
      • ②客户端
  • 4.22、多线程实现并发服务器
    • 1.服务器代码
    • 2.客户端代码
  • 4.23、TCP状态转换
    • 1.TCP状态转换图
    • 2.为什么需要四次挥手,状态转换
  • 4.24、半关闭、端口复用
    • 1.半关闭
    • 2.端口复用
  • 4.25、IO多路复用简介
    • 1.I/O多路复用(I/O多路转接)
      • ①阻塞等待(BIO模型)
      • ②非阻塞,忙轮询(NIO模型)
      • ③IO多路转接技术(select/poll)
      • ④IO多路转接技术(epoll)
  • 4.26和4.27、selectAPI介绍(4.27、select代码)
    • 1.selectAPI介绍
      • ①select多路复用流程图
      • ②select多路复用缺点
    • 2.select代码使用介绍
    • 3.select代码实现
      • ①select服务端实现
      • ②select客户端实现
  • 4.28、pollAPI介绍及代码编写
    • 1.poll使用介绍
    • 2.poll的服务端代码编写
      • ①服务端
      • ②客户端(跟其他的一样,没变)
  • 4.29和4.30、epoll的API介绍和代码编写
    • 1.epoll的IO多路复用使用流程图
    • 2.epoll的相关函数的使用介绍
    • 3.epoll代码编写
      • ①epoll服务端
      • ②客户端(没变,和之前一样)
  • 4.31、epoll的两种工作模式
    • 1.Epoll的工作模式
      • ①LT模式(水平触发)
        • epoll的正常情况下就是LT模式(代码实现)
      • ②ET模式(边沿触发)
        • ET模式下要注意设置非阻塞(代码实现)
  • 4.32、UDP通信实现
    • 1.UDP通信
      • ①UDP通信流程
      • ②UDP相关函数使用介绍
    • 2.UDP代码实现
      • ①服务端
      • ②客户端
  • 4.33、广播
    • 1.广播的介绍
    • 2.广播代码编写
      • ①服务端
      • ②客户端
  • 4.34、多播
    • 1.组播(多播)的介绍
      • ①组播地址
      • ②如何设置组播(组播的使用)
    • 2.代码编写
      • ①服务端
      • ②客户端
  • 4.35、本地套接字
    • 1.本地套接字的介绍
    • 2.本地套接字通信的流程
    • 3.本地套接字代码编写
      • ①服务端
      • ②客户端

4.1、网络结构模式

1.C/S结构

①C/S结构简介

②C/S结构优点

③C/S结构缺点

2.B/S结构

①B/S结构简介

②B/S结构优点

③B/S结构缺点

4.2和4.3、MAC地址、IP地址、端口

1.MAC地址的简介

2.IP地址

①IP地址简介

②IP地址编址方式

③A类IP地址

④B类IP地址

⑤C类IP地址

⑥D类IP地址

⑧子网掩码

3.端口

①简介

②端口类型

4.4、网络模型

1.OSI七层参考模型

2.TCP/IP四层模型

①简介

②四层介绍

4.5、协议

1.简介

2.常见协议

3.UDP协议

4.TCP协议

5.IP协议

6.以太网帧协议

7.ARP协议

4.6和4.7、网络通信的过程

1.封装

2.分用

3.数据经过四层TCP/IP

4.网络通信的过程

5.ARP协议获取MAC物理地址的过程

4.8、socket

1.socket介绍

4.9、字节序

1.简介

2.字节序举例

3.判断电脑存储方式代码

4.10、字节序列转换函数

1.字节序转换函数

2.字节序转换函数有哪些

3.字节序转换函数的使用

4.11、socket地址

1.通用socket地址

2.专用socket地址

4.12、ip地址转换函数

1.IP地址转换(字符串ip-整数,主机、网络字节序的转换)

2.转换函数的代码举例

4.13、TCP通信流程

1.TCP与UDP的区别(传输层协议)

2.TCP通信流程

①服务器端(被动接受连接的角色)

②客户端(主动发起连接)

4.14、socket函数

1.套接字函数有哪些

2.套接字函数介绍

①socket

②bind

③listen

④accept

⑤connect

4.15和4.16、TCP通信实现(本机)

1.TCP通信

①TCP通信(服务端)代码

②TCP通信(客户端)代码

4.17、TCP三次握手

1.TCP三次握手

2.TCP通信具体流程

①三次握手

②服务器客户端进行通信

4.18、TCP滑动窗口

1.滑动窗口的介绍

2.滑动窗口通信的例子

4.19、TCP四次挥手

1.TCP四次挥手

4.20和4.21、多进程实现并发服务器

1.TCP多进程通信并发

①服务端代码

②客户端

4.22、多线程实现并发服务器

1.服务器代码

2.客户端代码

4.23、TCP状态转换

1.TCP状态转换图

2.为什么需要四次挥手,状态转换

4.24、半关闭、端口复用

1.半关闭

2.端口复用

4.25、IO多路复用简介

1.I/O多路复用(I/O多路转接)

①阻塞等待(BIO模型)

②非阻塞,忙轮询(NIO模型)

③IO多路转接技术(select/poll)

④IO多路转接技术(epoll)

4.26和4.27、selectAPI介绍(4.27、select代码)

1.selectAPI介绍

①select多路复用流程图

②select多路复用缺点

2.select代码使用介绍

3.select代码实现

①select服务端实现

②select客户端实现

4.28、pollAPI介绍及代码编写

1.poll使用介绍

2.poll的服务端代码编写

①服务端

②客户端(跟其他的一样,没变)

4.29和4.30、epoll的API介绍和代码编写

1.epoll的IO多路复用使用流程图

2.epoll的相关函数的使用介绍

3.epoll代码编写

①epoll服务端

②客户端(没变,和之前一样)

4.31、epoll的两种工作模式

1.Epoll的工作模式

①LT模式(水平触发)

epoll的正常情况下就是LT模式(代码实现)

②ET模式(边沿触发)

ET模式下要注意设置非阻塞(代码实现)

4.32、UDP通信实现

1.UDP通信

①UDP通信流程

②UDP相关函数使用介绍

2.UDP代码实现

①服务端

②客户端

4.33、广播

1.广播的介绍

2.广播代码编写

①服务端

②客户端

4.34、多播

1.组播(多播)的介绍

①组播地址

②如何设置组播(组播的使用)

2.代码编写

①服务端

②客户端

4.35、本地套接字

1.本地套接字的介绍

2.本地套接字通信的流程

3.本地套接字代码编写

①服务端

②客户端

相关文章:

《C++高并发服务器笔记——第四章Linux网络编程》

计算机网络等相关知识可以去小林coding进行巩固(点击前往) 《C高并发服务器笔记——第四章》 4.1、网络结构模式1.C/S结构①C/S结构简介②C/S结构优点③C/S结构缺点 2.B/S结构①B/S结构简介②B/S结构优点③B/S结构缺点 4.2和4.3、MAC地址、IP地址、端口…...

NFS服务器搭建(案例)

目录标题 第一个问题1.安装软件包2.进入配置文件进行定义,并创建对应的资源文件3.客户端进行挂载,并查看挂载信息,修改挂载权限4.客户端查看挂载的信息 第二个问题1.服务端配置文件进行定义,并创建对应资源文件2.客户端进行挂载3.…...

ubuntu 22.04 安装 Docker Desktop 及docker介绍

目录 一、Docker Desktop 安装 1、我们先去官网下载安装包 2、Install Docker Desktop on Ubuntu 3、Launch Docker Desktop 二、Docker 介绍 什么是docker 如何使用docker docker是如何工作的 docker build docker run docker pull 一、Docker Desktop 安装 1、我们先…...

微前端中的应用隔离是什么,一般是怎么实现的?

微前端中的应用隔离是什么,一般是怎么实现的? 前言一、iframe 隔离二、Web Components三、JavaScript 沙箱隔离四、Shadow DOM 隔离总结 前言 微前端中的应用隔离是指将不同的微前端应用程序隔离开来,以确保它们之间不会相互影响或干扰。这种隔离可以通…...

【python pandas】合并文件并剔除重复数据

1.背景 工作中需要处理多个文件,每个文件里面有重复的数据,剔除重复数据,保留最新的数据 2.代码: import pandas as pd import osdl [] #person_list是文件路径 for i in range(person_list_len):#把文件df全部集合进列表dldl.a…...

Spellman高压电源X射线发生器维修XRB160PN480X4593

spellman高压发生器维修VMX40P5X4629;Spellman X射线发生器维修X4593系列 X射线源维修。 Spellman所拥有的变频器架构可以使高压电源获得高利用率的效率和功率密度。固体密封的高压模块进一步减少了尺寸和重量。 基于表面贴装控制电路的数字信号处理器提供通讯接口…...

msvcr120.dll丢失怎样修复?msvcr120.dll丢失修复的四个方法

打开软件跟游戏提示msvcr120.dll丢失,无法执行此代码怎么办?刚刚遇到这个问题,我都无从下手。家人们,你是不是也被这个问题也困扰过。msvcr120.dll是什么文件呢?经过我一个下午的时间研究,终于搞清楚了&…...

马哈鱼SQLFLow数据流生成介绍

马哈鱼数据血缘分析器是当前最流行的数据血缘关系(data lineage)管理工具之一,它是一种通过分析SQL脚本来自动发现数据流向的工具。它通过生成一个简洁的图表来显示数据仓库中表/视图和列之间的数据流。支持超过20种流行的数据库,包括 bigquery, couchba…...

使用 MVC 模式,实现简单登录功能 (Kotlin)

先放效果图: 第一张是登录页面效果图。用户输入登录名和密码,经过后台的非空验证和固定值验证,跳转到首页 第二张是首页效果图。用户点击 “update” 显示用户名和密码 这里的用户名和密码是后台设置的固定值,整体的登录逻辑特别…...

ASEMI代理LT8471IFE#PBF原装ADI车规级LT8471IFE#PBF

编辑:ll ASEMI代理LT8471IFE#PBF原装ADI车规级LT8471IFE#PBF 型号:LT8471IFE#PBF 品牌:ADI/亚德诺 封装:TSSOP-20 批号:2023 引脚数量:20 工作温度:-40C~125C 安装类型:表面…...

8. 100ASK_V853-PRO开发板支持MPP媒体处理平台

0.前言 ​ MPP 系统控制模块,根据芯片特性,完成硬件各个部件的复位、基本初始化工作,同时负责完成 MPP(Media Process Platform 媒体处理平台)系统各个业务模块的初始化、去初始化以及管理 MPP 系统各个业务模块的工作…...

CLMP证书:让你在职场中脱颖而出的秘密武器!

CLMP证书是一种精益管理专业证书,是针对精益管理领域的专业人士和学生的培训项目,旨在提高他们在精益管理方面的技能和知识。那么,CLMP证书的含金量高吗?接下来我们来探讨一下。 CLMP证书的优势体现 首先,CLMP证书的…...

【从零开始】Docker Desktop:听说你小子要玩我

前言 🍊缘由 捡起遗忘的Docker知识 由于本狗近期项目紧任务重,高强度的搬砖导致摸鱼时间下降。在上线项目时,看到运维大神一系列骚操作,dockerk8s的知识如过眼云烟,忘得干净的很。所以想重新恶补一下docker知识&…...

制造业为什么要数字化?

制造业数字化,主要包含以下一些因素,有优势也有缺点: 制造业数字化的优势: 提高效率:数字化允许各种制造过程自动化,可以提高效率并降低成本。可以缩短生产时间、减少浪费并提高生产率。 增强质量控制&am…...

NPC 也有了生命?当 ChatGPT 注入游戏你能想象吗

🍎道阻且长,行则将至。🍓 目录 引言:西部世界元宇宙,还记得吗ChatGPT 的世界? 下图就是一个 ChatGPT 小镇: 引言:西部世界 《西部世界》以一个虚构的游戏般的“西部世界”为背景…...

Shell编程入门讲解

一.简介 Shell 是一个用 C 语言编写的命令行解释器,它是用户使用 Linux 的桥梁,它接受应用程序/用户命令,然后调用操作系统内核。Shell 既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提…...

C++ 变量作用域

C 变量作用域 作用域是程序的一个区域,一般来说有三个地方可以定义变量: 在函数或一个代码块内部声明的变量,称为局部变量。 在函数参数的定义中声明的变量,称为形式参数。 在所有函数外部声明的变量,称为全局变量。…...

【状态未成功】CONFIG_CFI_CLANG失败过程记录

实现并没有成功,只是记录过程,使用4.9内核尝试开启过程 关于 控制流完整性 (CFI) 是一种安全机制,它不允许更改已编译二进制文件的原始控制流图,因而执行此类攻击变得异常困难。 在 Android 9 中,我们在更多组件以及内…...

基于消息调度优化启动速度方案实践

背景 在抖音的技术博客 https://juejin.cn/post/7080065015197204511#heading-10中,其介绍了通过修改消息队列顺序实现冷启动优化的方案,不过并未对其具体实现展开详细说明。 本文是对其技术方案的思考验证及实现。 详细代码见github: https://github.c…...

【C#】RemoveAt索引越界问题

系列文章 【C#】单号生成器(编号规则、固定字符、流水号、产生业务单号) 本文链接:https://blog.csdn.net/youcheng_ge/article/details/129129787 【C#】日期范围生成器(开始日期、结束日期) 本文链接:h…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

python/java环境配置

环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...