You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IPv6客户端socket绑定指定端口异常 实际绑定端口与预期不符

问题根因
  • 代码未将传入的端口号从主机字节序转换为网络字节序,直接赋值给了sockaddr_in6结构的sin6_port字段,导致实际绑定的端口和预期不一致。
  • 网络协议栈要求端口、IP地址这类字段必须使用大端格式(网络字节序),而常用的x86/ARM等平台主机字节序多为小端格式,直接赋值会出现字节序反转的问题,你遇到的数值刚好对应了反转后的结果:你传入的54682是小端主机字节序,内核按大端读取后实际值就是39637,和你运行输出完全吻合。
修复方法

修改代码中端口赋值的一行,添加htons函数做字节序转换:

// 原错误代码
addr.sin6_port = atoi(argv[1]);
// 修改为
addr.sin6_port = htons(atoi(argv[1]));

htons是专门用于将16位整数(端口号刚好是16位)从主机字节序转换为网络字节序的系统函数,修改后重新编译运行即可实现绑定指定端口的效果。


内容的提问来源于stack exchange,提问作者suresh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 12:18:03