Socket 编程进阶:为什么必须搞懂“字节序”与“大小端”?

各类资料学习下载合集
链接:https://pan.quark.cn/s/770d9387db5f

一、 套接字(Socket):网络的插头与插座

Socket 的原意是“插座”。在网络通信中,它的角色分工非常明确,就像家用电器插电一样:

  • 服务器端 (Server):扮演插座的角色。它被动等待,必须绑定一个固定的 IP 和端口,静静等待别人来连。
  • 客户端 (Client):扮演插头的角色。它主动发起连接,必须知道服务器的 IP 和端口才能“插”进去。

虽然编程语言各异(C, Python, Java),但这套基于 TCP/IP 的流程是全球通用的事实标准。


二、 隐形杀手:字节序 (Byte Order)

你可能会问:“由于不同计算机的体系结构不同,内存存储数据的方式也不同,这会影响通信吗?”答案是肯定的。

1. 什么是大端与小端?

假设我们要存储一个十六进制数字0x12345678(共4个字节)。

  • 大端序 (Big-Endian):高位字节存放在低地址。
    • 内存样子:12 34 56 78(符合人类阅读习惯)
    • 网络字节序采用这种标准。
  • 小端序 (Little-Endian):低位字节存放在低地址。
    • 内存样子:78 56 34 12(x86 架构电脑常用)
    • 主机字节序通常是这种。

2. 为什么要转换?

如果你的电脑(小端)发给服务器(大端)一个端口号80,如果不转换,服务器读出来的可能就是20480!因此,Socket 编程规定:所有大于 1 个字节的数据(如 int, short),传输前必须转换为网络字节序(大端)。


三、 代码实战 1:检测你的电脑是“大端”还是“小端”

在开始写 Socket 代码前,我们先写一段 C 代码,看看你当前使用的电脑内存里到底是怎么存数据的。

代码 (check_endian.c)
#include<stdio.h>intmain(){// 定义一个 4 字节的整数unsignedintx=0x12345678;// 使用字符指针指向 x 的首地址 (只看第 1 个字节)unsignedchar*c=(unsignedchar*)&x;printf("原始数值: 0x12345678\n");printf("内存首字节内容: 0x%x\n",*c);if

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

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

相关文章

GitHub Pages搭建Qwen3Guard-Gen-8B项目静态官网展示

GitHub Pages 搭建 Qwen3Guard-Gen-8B 项目静态官网展示 在生成式 AI 爆发式增长的今天&#xff0c;大模型驱动的内容创作、智能客服和虚拟助手正以前所未有的速度渗透进我们的数字生活。但与此同时&#xff0c;不当言论、虚假信息、敏感内容等安全风险也如影随形。传统基于关键…

工业照明自动控制系统建模:Proteus零基础指南

从零开始构建工业照明自动控制系统&#xff1a;Proteus实战入门你有没有遇到过这样的场景&#xff1f;工厂车间里明明没人&#xff0c;灯却一直亮着&#xff1b;或者仓库角落光线昏暗&#xff0c;工人来回走动时还得手动开灯——既浪费电&#xff0c;又影响安全。其实&#xff…

增强型MOSFET和耗尽型的区别

MOSFET根据其工作特性主要分为两大类&#xff1a;增强型MOSFET和耗尽型MOSFET。这两种MOSFET在结构、工作原理和应用场景上有着显著的区别。本文将详细探讨增强型MOS和耗尽型MOS的特点&#xff0c;并分析它们在不同电子设备中的应用。增强型MOSFET和耗尽型MOSFET的核心区别在于…

智慧城市实战:基于AI的城市道路拥堵解决方案

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个智慧城市道路管理系统&#xff0c;功能包括&#xff1a;1. 实时交通数据采集接口 2. 基于机器学习的拥堵预测模型 3. 动态信号灯控制算法 4. 应急车辆优先通行逻辑 5. 可视…

企业级HCI部署陷阱频现,你真的懂MCP Azure Stack HCI吗?

第一章&#xff1a;MCP Azure Stack HCI 部署的认知误区在部署 MCP&#xff08;Microsoft Cloud Platform&#xff09;Azure Stack HCI 时&#xff0c;许多管理员基于公有云 Azure 的使用经验做出假设&#xff0c;导致架构设计与实际需求脱节。这种混淆不仅影响系统性能&#x…

酒精饮品消费提醒:Qwen3Guard-Gen-8B注明未成年人禁用

酒精饮品消费提醒&#xff1a;Qwen3Guard-Gen-8B注明未成年人禁用 在社交平台、智能助手和内容生成系统日益普及的今天&#xff0c;一个看似简单的用户提问——“我16岁了&#xff0c;喝点啤酒应该没问题吧&#xff1f;”——可能正悄然触发一场AI伦理与技术安全的深层博弈。这…

VS Code + CMake:告别手动配置,提升10倍开发效率

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个VS Code项目&#xff0c;使用CMake管理依赖库。项目需要引用一个外部库&#xff08;如Boost或OpenCV&#xff09;&#xff0c;并编写一个简单的示例程序使用该库的功能。请…

基于STM32CubeMX的CAN总线设置:新手教程

手把手教你用STM32CubeMX配置CAN总线&#xff1a;从零开始的实战指南你有没有遇到过这样的情况&#xff1f;项目急着要通信功能&#xff0c;结果一上来就卡在CAN波特率算不对、收不到数据、过滤器莫名其妙不生效……明明硬件都接好了&#xff0c;示波器也看到信号了&#xff0c…

为什么你的VSCode AI助手反应迟钝?深度剖析会话瓶颈根源

第一章&#xff1a;VSCode智能体会话优化的必要性在现代软件开发中&#xff0c;开发者频繁依赖集成开发环境&#xff08;IDE&#xff09;进行代码编写、调试与协作。VSCode凭借其轻量级架构和丰富的插件生态&#xff0c;已成为主流选择之一。然而&#xff0c;随着项目复杂度提升…

VSCode智能感知总出错?5分钟定位并修复会话异常问题

第一章&#xff1a;VSCode智能体会话异常问题概述 在使用 Visual Studio Code&#xff08;VSCode&#xff09;进行开发时&#xff0c;部分用户反馈其智能体会话功能频繁出现异常&#xff0c;表现为代码补全延迟、建议列表不完整或完全失效。此类问题不仅影响开发效率&#xff0…

不同磁芯电感的优缺点

了解不同磁芯电感的优缺点&#xff0c;能帮助你在电路设计中做出合适的选择。磁芯类型优点缺点铁氧体电阻率高&#xff0c;涡流损耗小&#xff0c;高频特性好&#xff0c;成本低&#xff0c;良好的温度稳定性饱和磁通密度较低&#xff0c;大电流下易饱和&#xff0c;居里温度点…

制定有效制造运营管理策略的 10 个步骤

要克服挑战、推动全公司制造运营向以客户为导向转型&#xff0c;首先需要清晰定义成功的标准。 精准、实时的生产可视化不仅能提高产品质量、订单准确率与客户满意度&#xff0c;还能在工厂层面降低制造成本。让所有生产基地的运营聚焦于统一目标&#xff0c;可提高毛利率、降低…

MobileNetV3实战:从零构建移动端目标检测应用

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 基于MobileNetV3和SSD&#xff08;Single Shot MultiBox Detector&#xff09;框架&#xff0c;开发一个移动端目标检测应用。提供数据集预处理代码、模型训练脚本&#xff08;使用…

基于Multisim14.3的PCB协同设计实战案例

从仿真到布板&#xff1a;用 Multisim14.3 打通音频放大器设计全流程你有没有经历过这样的场景&#xff1f;辛辛苦苦画完原理图、打样PCB、焊好板子&#xff0c;结果一通电——输出全是噪声&#xff0c;增益不对&#xff0c;甚至芯片发热冒烟。回头再改版&#xff1f;时间耽误了…

SSD1306中文手册I2C通信常见问题系统学习

一块OLED屏的“黑话”&#xff1a;从SSD1306手册看懂I2C通信那些坑你有没有遇到过这样的场景&#xff1f;接好线&#xff0c;烧录代码&#xff0c;打开电源——屏幕要么全黑、要么花屏乱码&#xff0c;甚至在IC扫描里根本找不到设备。而你明明用的是最常见的SSD1306 OLED模块&a…

【MCP Azure Stack HCI 部署终极指南】:掌握混合云架构核心技能的5大关键步骤

第一章&#xff1a;MCP Azure Stack HCI 部署概述Azure Stack HCI 是微软推出的超融合基础设施解决方案&#xff0c;旨在将本地数据中心与云原生能力深度融合。该平台基于 Windows Server 操作系统内核&#xff0c;集成软件定义计算、存储和网络功能&#xff0c;并通过 Azure A…

子女教育专项附加扣除:Qwen3Guard-Gen-8B说明申报方式

Qwen3Guard-Gen-8B&#xff1a;语义驱动的内容安全新范式 在生成式AI加速落地的今天&#xff0c;一个看似简单的问题却频频困扰产品团队&#xff1a;“这个回答能发出去吗&#xff1f;” 无论是教育类APP担心学生提问越界&#xff0c;还是跨境社交平台忧虑文化差异引发争议&a…

万物识别模型压测指南:快速创建分布式测试环境

万物识别模型压测指南&#xff1a;快速创建分布式测试环境 作为一名性能测试工程师&#xff0c;你是否遇到过这样的困境&#xff1a;需要评估物体识别API的并发处理能力&#xff0c;但公司的基础设施资源有限&#xff0c;无法满足大规模压测需求&#xff1f;本文将介绍如何利用…

神经网络(输出层的设计)

输出层的设计 神经网络可以用在分类问题和回归问题上&#xff0c;不过需要根据情况改变输出 层的激活函数。一般而言&#xff0c;回归问题用恒等函数&#xff0c;分类问题用softmax 函数。机器学习的问题大致可以分为分类问题和回归问题。分类问题是数 据属于哪一个类别的问题。…

中文长尾识别:解决数据不平衡的快速实验平台

中文长尾识别&#xff1a;解决数据不平衡的快速实验平台 在机器学习领域&#xff0c;数据不平衡问题一直是困扰开发者的常见挑战。特别是处理中文长尾识别任务时&#xff0c;类别分布不均会导致模型偏向于头部类别&#xff0c;严重影响尾部类别的识别效果。本文将介绍如何利用预…