繁体   English   中英

in_addr_t .net_ntoa 等类型的地址是什么

[英]what are addresses of type in_addr_t inet_ntoa etc

好的,在发布这个问题之前,我已经检查了这里的线程in_addr_t 到字符串

我的问题是不同的。

我知道 .net_ntoa function 属于以下类型

char * inet_ntoa (struct in_addr in);

我想知道的是in_addr_t是什么

在套接字程序中使用时将是什么表示形式。

我检查了.net.net/in.h>

   typedef uint32_t in_addr_t;

   struct in_addr {
       in_addr_t s_addr;
   };

属于上述类型。 我不想像 .net_ntoa 那样将 in_addr_t 打印到 char *。 我想看看in_addr_t是什么。那么它是怎么做到的或者in_addr_t到底是什么以及为什么在socket编程中一次又一次地使用它。 如果我没记错的话,它被定义为

typedef uint32_t in_addr_t;

因此,如果in_addr_tunsigned 32 bit int,我想看看那是什么,而不是在标准输出上打印 192.168.1.1 类 output 的char *

众所周知(我们知道,对吗?) IPv4地址是使用无符号 32 位 integer 表示的。 我们这些弱小的人类不太擅长处理大数(或小数),所以我们使用点十进制表示法。 (你知道你现在在1076000524吗?我也不知道)。

但是,由于您通过netinet挖掘并发现了标准明确规定的内容

<netinet/in.h> header 应定义in_addr结构,该结构应至少包括以下成员:

in_addr_t s_addr

哪个是

in_addr_t相当于<inttypes.h>中描述的类型uint32_t

你可以打印它。

printf("My unreadable addres is %u\n", in.s_addr);

快, 134744072代表什么?

您必须将 134744072 转换为十六进制:printf("My unreadable address is %lX\n", in.s_addr);

-> "%lX" 用于长无符号十六进制。 这个地址是:8.8.8.8

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM