news 2026/8/29 9:49:06

Socket 编程必修课:Bind 函数与地址结构体的奥秘

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Socket 编程必修课:Bind 函数与地址结构体的奥秘

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

一、 为什么必须 Bind?

在 TCP 通信中,服务器的角色就像是一家实体店

  • Socket:相当于你注册了营业执照。
  • Bind:相当于你租下了一个具体的门面(IP + 端口)。

如果你不开店(不 Bind),虽然你也可以去逛街(作为客户端连接别人),但顾客(客户端)永远找不到你在哪里。因此,服务器必须绑定固定的 IP 和端口


二、 结构体的“变装秀”:sockaddrvssockaddr_in

这是 Socket 编程中最让新手困惑的地方:为什么有两个地址结构体?

1. 历史遗留问题

bind函数设计之初,是为了支持所有协议(IPv4, IPv6, UNIX 域等)。因此,它的参数类型是通用的struct sockaddr*

2. 内存布局对比

为了方便程序员操作,针对 IPv4 协议,系统提供了专用的struct sockaddr_in。好消息是,它们在内存中的大小完全一样(16字节),可以直接强转。

字节偏移struct sockaddr(通用)struct sockaddr_in(IPv4专用)
0 - 1sa_family(地址族)sin_family(地址族,如 AF_INET)
2 - 3sa_data(混合数据)sin_port(端口号)
4 - 7sin_addr(IP地址)
8 - 15sin_zero(填充字节,为了凑齐16字节)

最佳实践:我们在代码中定义和填充sockaddr_in,但在调用bind时,将其强制类型转换为sockaddr*


三、 Bind 函数详解

intbind(intsockfd,conststructsockaddr*addr,socklen_taddrlen);
  • 参数 1 (sockfd):通过socket()创建的文件描述符。
  • 参数 2 (addr):指向地址结构体的指针(需强转)。
  • 参数 3 (addrlen):结构体的大小,通常写sizeof(struct sockaddr_in)

常用写法模板

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

Z-Image Turbo体验指南:1块钱起玩转阿里开源模型

Z-Image Turbo体验指南:1块钱起玩转阿里开源模型 引言:为什么选择云端体验Z-Image Turbo? 阿里最新开源的Z-Image Turbo模型在图像生成领域引起了广泛关注,但很多技术爱好者在本地部署时遇到了各种报错和兼容性问题。如果你也遇…

作者头像 李华
网站建设 2026/8/27 10:02:34

ComfyUI恐惧症治愈:Z-Image云端极简模式体验

ComfyUI恐惧症治愈:Z-Image云端极简模式体验 1. 为什么你需要Z-Image极简模式 如果你曾经被ComfyUI复杂的节点连线界面吓退,那么Z-Image云端极简模式就是为你量身定制的解决方案。想象一下,ComfyUI原本的界面就像是一台专业录音棚的调音台&…

作者头像 李华
网站建设 2026/8/28 8:24:54

数字内容保存高效解决方案:让珍贵记忆永不丢失

数字内容保存高效解决方案:让珍贵记忆永不丢失 【免费下载链接】VK-Video-Downloader Скачивайте видео с сайта ВКонтакте в желаемом качестве 项目地址: https://gitcode.com/gh_mirrors/vk/VK-Video-Download…

作者头像 李华
网站建设 2026/8/24 5:42:35

国家中小学智慧教育平台教材下载完整指南:3步轻松获取电子课本

国家中小学智慧教育平台教材下载完整指南:3步轻松获取电子课本 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具 项目地址: https://gitcode.com/GitHub_Trending/tc/tchMaterial-parser 还在为无法下载国家中小学智慧教育平台…

作者头像 李华
网站建设 2026/8/29 7:30:29

【稀缺技术揭秘】:超低延迟音视频传输是如何实现的?

第一章:超低延迟音视频传输的技术背景在实时通信、云游戏、远程医疗和在线教育等场景中,用户对音视频交互的实时性要求日益提升。传统流媒体协议如HLS或RTMP通常带来数秒级延迟,已无法满足当前业务需求。超低延迟音视频传输技术应运而生&…

作者头像 李华