news 2026/4/23 17:40:24

Socket 编程:IP转换、字节序与地址结构详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Socket 编程:IP转换、字节序与地址结构详解

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

一、 为什么需要“翻译官”?(字节序转换)

计算机存储数据有两种方式:

  • 小端序 (Little Endian):低位在前(大部分 PC、Linux 主机默认)。
  • 大端序 (Big Endian):高位在前(网络传输标准)。

如果你的主机是小端序,直接把端口号80发给网络,网络设备可能会把它读成20480!因此,我们需要一组函数来进行“翻译”。

助记口诀

函数名中的字母代表含义:

  • h: host(主机字节序)
  • n: net(网络字节序)
  • s: short(16位,用于端口号)
  • l: long(32位,用于 IPv4 地址)

常用函数

  • htons(8888): Host to Network Short ->把端口号转为大端(最常用)。
  • ntohs(port): Network to Host Short ->把收到的端口号转回本机格式
  • htonl(ip): Host to Network Long ->把 IP 整数转为大端
  • ntohl(ip): Network to Host Long ->把收到的 IP 整数转回本机格式

二、 IP 地址的“变身”:字符串 vs 整数

人类习惯看字符串形式的 IP(如"192.168.1.1"),但计算机网络层只认 32 位的整数(大端序)。我们需要两个核心函数来转换。

1.inet_pton(P -> N)

  • 含义:Presentation (字符串) to Numeric (数值)。
  • 作用:将"192.168.1.1"转为大端整数,存入struct in_addr
  • 原型int inet_pton(int af, const char *src, void *dst);

2.inet_ntop(N -> P)

  • 含义:Numeric (数值) to Presentation (字符串)。
  • 作用:将网络发来的大端整数 IP 转回"192.168.1.1"方便打印。
  • 原型const char *inet_ntop(int af, const void *src, char *dst, socklen_t size);

三、 核心结构体:sockaddr_in

在 Socket 编程中,最重要的结构体莫过于 IPv4 的地址结构struct sockaddr_in

structsockaddr_in{sa_family_tsin_family;// 地址族协议,必须写 AF_INETin_port_tsin_port;// 端口号 (必须用 htons 转为网络字节序)structin_addrsin_addr;// IP地址 (必须是网络字节序的大端整数)};

注意:在调用bind

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 4:12:04

​​​​​​​精准控本利器!深度解析1688物流API运费计算工具

在电商运营中,物流成本是影响整体利润的关键因素之一。尤其对于从1688平台采购货源的商家,如何高效、准确地预估和控制物流运费,是降本增效的核心环节。1688物流API提供的运费计算工具正是为此而生的强大武器。本文将深入探讨其技术原理和应用…

作者头像 李华
网站建设 2026/4/23 9:46:39

有关大模型的本质思考

昨天和朋友讨论生成式大模型的机理时,谈到了一个之前没注意过的问题:神经网络的输入输出往往是固定的,为什么大模型能处理不同长度文本?比如给GPT输入不同的提示词,它都能继续不断预测下一个词。这个问题涉及到语言大模…

作者头像 李华
网站建设 2026/4/23 9:46:15

没N卡也能实时检测:骨骼点云端方案,Mac用户福音

没N卡也能实时检测:骨骼点云端方案,Mac用户福音 引言 作为一名iOS开发者,当你需要在应用中集成动作识别功能时,是否遇到过这样的困境:公司配发的MacBook Pro跑个Demo都能卡成PPT,而为了测试去买台Windows…

作者头像 李华
网站建设 2026/4/23 9:47:17

AppImageLauncher终极指南:让Linux桌面真正AppImage-ready

AppImageLauncher终极指南:让Linux桌面真正AppImage-ready 【免费下载链接】AppImageLauncher Helper application for Linux distributions serving as a kind of "entry point" for running and integrating AppImages 项目地址: https://gitcode.com…

作者头像 李华
网站建设 2026/4/17 21:46:56

ComfyUI学习成本太高?Z-Image云端简化版上线

ComfyUI学习成本太高?Z-Image云端简化版上线 引言:AI绘画新手的福音 如果你对AI绘画感兴趣,但被ComfyUI复杂的节点连线界面劝退,那么Z-Image云端简化版就是为你量身定制的解决方案。ComfyUI作为强大的AI绘画工具,其工…

作者头像 李华
网站建设 2026/4/23 9:46:42

WebPShop插件:Photoshop完美支持WebP格式的终极指南

WebPShop插件:Photoshop完美支持WebP格式的终极指南 【免费下载链接】WebPShop Photoshop plug-in for opening and saving WebP images 项目地址: https://gitcode.com/gh_mirrors/we/WebPShop 还在为Photoshop无法处理WebP格式而困扰吗?WebPSho…

作者头像 李华