Socket实现服务器搭建

news2025/2/26 3:35:53

一、前言:

Socket上篇文章已经介绍过了 他是实现网络编程的基础 。

在服务器模型中通常都是多个客户端一个服务器端,那么服务器是如何处理多个客户端的请求?

1.顺序处理 依次处理--效率低下

2.并发处理

        2.1 多线程并发(线程池)

        2.2 多进程池

        2.3 I/O转接接口 select epoll -可在单线程处理多任务请求     +多线程效率更高

        2.4 libevent 高并发框架

若客户端内部任务较复杂,需要同时进行上传和下载 ,可建立多个连接实现不同任务。创建套接字连接池(与线程池搭配使用),每个连接处理多个流程。

数据TCP/IP传输过程

 问题解惑:协议是什么?为什么要需要协议?

个人理解:在数据传输是数据通常要以二进制传输数据。接收方与发送方要保证能够接收(TCP建立连接 IP地址寻找到目标主机 )以及接受到的内容一致(HTTP FTP等类似编码解码)。所以需要制定协议完成数据的传输。

注:在应用层以下通常不需要程序员完成,均由内核完成。

数据传输存储简图

在计算机通信过程中为了使通信双方能够正常通信,正常的编译码,所以需要对传输单元(比特 字节 等)传输顺序进行规定。由此引出字节序。

二、字节序

字节序,就是字节的顺序,最小单位是字节,即大于一个字节类型的数据在内存中存放顺序。(单字符无顺序以及字符串无顺序问题;int long 有顺序问题) 

在各体系计算机中通常采用两种字节存储机制:Big-Endian和Little-Endian,即 大小端

2.1 Little-Endian -> 主机字节序 (小端)   --低低 高高

据的低位字节存储到内存的低地址位, 数据的高位字节存储到内存的高地址位
我们使用的PC机,数据的存储默认使用的是小端
2.2 Big-Endian -> 网络字节序 (大端)--低高 高低

数据的低位字节存储到内存的高地址位, 数据的高位字节存储到内存的低地址位
套接字通信过程中操作的数据都是大端存储的,包括:接收/发送的数据、IP地址、端口。

在主机 通过网络传输过程中

主机发送数据: 小端转为大端       接受数据:将大端转为小端 存储

问:0x12 34 56 78 占多少个字节?

答:0xff=255 占一个字节  小于0xff均为一个字节存储,  那么0x12 0x34 0x56 0x78 各占一个字节 一共占四个字节

内存对齐

问:0x12 34 56 78 大端小端各自如何存储?

答 0x12 34 56 78 为由高位字节到低位字节 因此 

大端 78 56 34 12

小端 12 34 56 78

持续更新...


作者: 苏丙榅
链接: https://subingwen.cn/linux/socket/?highlight=soc
 

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

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

相关文章

《向量数据库》——Zilliz X Dify.AI ,快速打造知识库 AI 应用

Zilliz 大模型生态矩阵再迎新伙伴!近日,Zilliz 和 Dify.AI 达成合作,Zilliz 旗下的产品 Zilliz Cloud、Milvus 与开源 LLMOps 平台 Dify 社区版进行了深度集成。 01. Zilliz Cloud v.s. Dify Dify 作为开源的 LLMs App 技术栈,在此前已支持丰富多元的大型语言模型的接入,…

解密Java中神奇的Synchronized关键字

文章目录 🎉 定义🎉 JDK6以前🎉 偏向锁和轻量级锁📝 偏向锁📝 轻量级锁📝 自旋锁📝 重量级锁🔥 1. 加锁🔥 2. 等待🔥 3. 撤销 🎉 锁优化&#x1f…

将字符串中的数据按指定分隔符分割依次存入一维数组中 numpy.fromstring()

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 将字符串中的数据 按指定分隔符分割 依次存入一维数组中 numpy.fromstring() [太阳]选择题 请问以下代码中执行语句输出结果依次是? import numpy as np str1 "1.0 2.0 3.…

力扣第55题 跳跃游戏 c++ 贪心 + 覆盖 加暴力超时参考

题目 55. 跳跃游戏 中等 相关标签 贪心 数组 动态规划 给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回 true &…

【算法训练-动态规划 四】【子序列类型问题】连续子数组的最大和

废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是【动态规划】,使用【数组】这个基本的数据结构来实现,这个高频题的站点是:CodeTop,筛选条件为&…

架构设计系列5:如何设计高可用架构

#1024程序员节|参与投稿,赢限定勋章和专属大奖# 当今的数字时代,高可用架构已经成为了现代应用和服务的基石。无论是企业级应用、云计算平台还是互联网服务,高可用性都是确保系统在面临各种挑战时保持稳定运行的关键要素。 本文…

计算机算法分析与设计(19)---回溯法(装载问题)

文章目录 1. 题目描述2. 算法思路3. 代码编写 1. 题目描述 2. 算法思路 1. 思路: 容易证明,如果一个给定装载问题有解,则采用下面的策略可得到最优装载方案。 (1) 首先将第一艘轮船尽可能装满。(2) 将剩余的集装箱装上第二艘轮船。 2. 将第一…

基于springboot实现基于Java的超市进销存系统项目【项目源码+论文说明】

基于springboot实现基于Java的超市进销存系统演示 摘要 随着信息化时代的到来,管理系统都趋向于智能化、系统化,超市进销存系统也不例外,但目前国内仍都使用人工管理,市场规模越来越大,同时信息量也越来越庞大&#x…

Xilinx的FIR滤波器IP的设计与仿真

平台:Vivado2021.1 芯片:xcku115-flva1517-2-i (active) 语言:VerilogHDL 参考文件:pg149.下载地址 FIR Compiler LogiCORE IP Product Guide • FIR Compiler (PG149) • 阅读器 • AMD 自适应计算文档门户 (xilinx.com) FI…

【漏洞复现】panalog日志审计系统任意用户创建漏洞和后台命令执行

漏洞描述 panalog为北京派网软件有限公司,一款流量分析,日志分析管理的一款软件。存在任意用户创建漏洞和后台命令执行漏洞,可先通过任意用户创建,然后进行后台命令执行,获取服务器权限。 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公…

怎么保护公司文件安全

怎么保护公司文件安全 无纸化办公时代,无论是企业还是个人在生活的方方面面都依赖于对电子化软件以及设备的使用。尤其是对于企业而言,在日常办公中产生的相关电子文件都是以电子文档的形式存储在电脑上。 下载试用安企神数据防泄密软件 若企业未实施…

力扣刷题 day53:10-23

1.二进制表示中质数个计算置位 给你两个整数 left 和 right ,在闭区间 [left, right] 范围内,统计并返回 计算置位位数为质数 的整数个数。 计算置位位数 就是二进制表示中 1 的个数。 例如, 21 的二进制表示 10101 有 3 个计算置位。 方…

Uncaught TypeError: Cannot use ‘in‘ operator to search for ‘path‘ in undefined

Uncaught TypeError: Cannot use ‘in’ operator to search for ‘path’ in undefined 报错如下: Uncaught TypeError: Cannot use in operator to search for path in undefinedat resolve (vue-router.esm-bundler.js:2882:13)at pushWithRedirect (vue-router…

Java将djvu文件转成pdf

需求来源 迫于有部分资源是djvu格式的文件,需要预览这部分文件,web端无法直接预览djvu,所以需要将djvu转成pdf。 转换方法 简单来说就是先把djvu文件转换成tiff文件,再将tiff文件转换成pdf文件。 Ubuntu服务器 如果服务器是U…

【软考-中级】系统集成项目管理工程师-项目收尾管理历年案例

持续更新。。。。。。。。。。。。。。。 目录 2017 下 试题三(17分)背诵整理1. 项目总结会议一般讨论的内容2. 系统文档验收所涉及的文档都有哪些 系列文章 2017 下 试题三(17分) 阅读下列说明,回答问题 1至问题 4,将解答填入答题纸的对应栏内     …

几种基本的高斯分布数学运算,加法、乘法、缩放和卷积及运用场景

文章目录 高斯分布进行乘法运算几种基本的数学运算上述这些运算可以运用与什么场景?高斯分布进行乘法运算 当两个高斯分布进行乘法运算时,这通常是在估计或滤波的上下文中,如在卡尔曼滤波中的更新步骤。为了理解背后的数学原理,我们首先定义两个高斯分布: 当我们将这两个…

107. 面试官:JS如何实现继承?

107期 1. JS如何实现继承? 2. meta标签中的viewport有什么用? 3. 说手webpack的构建流程? 上面问题的答案会在第二天的公众号(程序员每日三问)推文中公布 也可以小程序刷题,已收录500面试题及答案 106期问题及答案 1. webpack如…

华为昇腾NPU卡 ChatGLM2模型使用

参考:https://gitee.com/mindspore/mindformers/blob/dev/docs/model_cards/glm2.md#chatglm2-6b 1、安装环境: 昇腾NPU卡对应英伟达GPU卡,CANN对应CUDA底层; mindspore对应pytorch;mindformers对应transformers 本…

第1章 Java、IDEA环境部署与配置

JavaEE简介与IDE环境部署 课程目录 JavaEE简介JDK环境部署IntelliJ IDEA环境部署 JavaEE简介 1. JavaEE是什么? Java EE(Java Platform,Enterprise Edition)是sun公司(2009年4月20日甲骨文将其收购)推…

QGIS007:【01空间操作】-提取两个图层空间相交属性一致的图斑

引言:本文介绍使用QGIS图形建模器设计模型,提取出两个图层空间位置存在交集且字段(NAME;LAYER)属性值完全一致的要素。 实验数据: 链接:https://pan.baidu.com/s/1qqylXkqzRFNnKK-pRQNkMg?pwdurzx 提取码…