news 2026/6/2 9:19:26

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/20 19:38:50

基于AI的区块链存证动态测试框架

随着2026年多链互操作协议&#xff08;IBC 3.0&#xff09;的普及&#xff0c;数字遗嘱存证面临跨链数据一致性与智能合约动态漏洞的双重挑战。本文提出四维测试模型&#xff1a;一、AI赋能的异常行为检测系统动态预言机验证使用LSTM神经网络构建交易模式基线&#xff08;代码示…

作者头像 李华
网站建设 2026/5/19 18:36:32

疫情通报内容生成:Qwen3Guard-Gen-8B防止恐慌情绪渲染

Qwen3Guard-Gen-8B&#xff1a;让疫情通报既真实又稳妥&#xff0c;AI如何守住情绪防线 在一次突发公共卫生事件中&#xff0c;某地卫健委的AI助手自动生成了一条通报&#xff1a;“新增病例突破千例&#xff0c;医疗资源濒临崩溃&#xff01;”消息尚未发布&#xff0c;系统后…

作者头像 李华
网站建设 2026/5/20 18:33:00

UE5 C++(9):

&#xff08;47&#xff09; &#xff08;48&#xff09; 谢谢

作者头像 李华
网站建设 2026/5/31 13:11:33

告别高延迟:构建高效VSCode Agent HQ工作环境的6大核心配置

第一章&#xff1a;VSCode Agent HQ 性能优化的核心价值在现代软件开发中&#xff0c;编辑器性能直接影响开发者的工作效率与体验。VSCode Agent HQ 作为集成开发环境中的智能代理核心&#xff0c;其性能优化不仅提升了响应速度&#xff0c;还显著降低了资源占用&#xff0c;使…

作者头像 李华
网站建设 2026/5/28 8:41:22

Keil5安装教程通俗解释:五分钟搞懂关键步骤

五分钟搞懂 Keil5 安装&#xff1a;从零开始搭建嵌入式开发环境 你是不是刚接触STM32&#xff0c;打开电脑准备写第一行代码时&#xff0c;却被“Keil怎么装&#xff1f;”这个问题卡住了&#xff1f; 别急。虽然网上教程不少&#xff0c;但很多只是机械地告诉你“下一步、下…

作者头像 李华
网站建设 2026/5/31 14:35:26

为什么你的VSCode聊天功能越用越慢?,一文看懂资源占用真相

第一章&#xff1a;为什么你的VSCode聊天功能越用越慢&#xff1f;在使用 VSCode 的集成聊天功能&#xff08;如 GitHub Copilot Chat 或其他 AI 插件&#xff09;时&#xff0c;许多开发者反馈随着使用时间增长&#xff0c;响应速度明显变慢。这一现象通常并非网络问题&#x…

作者头像 李华