2026/5/18 18:50:19
网站建设
项目流程
民营医院网站建设,建设高端网站公司,公司有域名的怎么建设网站,做网站需要租空间吗Socket 编程进阶:inet_ntop 函数与 sockaddr 结构体详解
一、 inet_ntop:让 IP 地址“现原形”
当网络包到达你的程序时,IP 地址是 网络字节序(大端) 的二进制数据。为了让人能看懂,我们需要把它还原成点分十进制字符串(如 192.168.1.1)。
这就要用到 i…Socket 编程进阶:inet_ntop函数与sockaddr结构体详解一、inet_ntop:让 IP 地址“现原形”当网络包到达你的程序时,IP 地址是网络字节序(大端)的二进制数据。为了让人能看懂,我们需要把它还原成点分十进制字符串(如"192.168.1.1")。这就要用到inet_ntop函数。n: Network (网络/数值)to: 转换p: Presentation (显示/文本)1. 函数原型#includearpa/inet.hconstchar*inet_ntop(intaf,constvoid*src,char*dst,socklen_tsize);2. 参数解析(敲黑板!)af:协议族。AF_INET(IPv4) 或AF_INET6(IPv6)。src:传入参数。指向存放了大端 IP 的内存地址(通常是struct sockaddr_in里的sin_addr)。dst:传出参数。你需要先准备好一个字符数组,函数会把转换好的字符串填进去。size:缓冲区大小。告诉函数dst有多大,防止写越界。IPv4 建议至少定义 16 字节 (INET_ADDRSTRLEN)。IPv6 建议至少定义 46 字节 (INET6_ADDRSTRLEN)。3. 返回值成功:返回指向dst的非空指针(也就是转换后的字符串地址)。失败:返回NULL(此时需检查errno)。二、 代码实战:将二进制 IP 还原为字符串假设我们从网络中直接捕获了 4 个字节C0 A8 01 02,我们看看如何把它变回字符串。代码 (ntop_demo.c)#includestdio.h#includearpa/inet