Reg*_*ser 8 c sockets network-programming in-addr
在发布此问题之前我已经检查了线程in_addr_t中的线程
我的问题不同.
我知道inet_ntoa函数属于以下类型
char * inet_ntoa (struct in_addr in);
Run Code Online (Sandbox Code Playgroud)
我想知道的是什么 in_addr_t
在套接字程序中使用它时的表示形式.
我检查了结构定义 <netinet/in.h>
typedef uint32_t in_addr_t;
struct in_addr {
in_addr_t s_addr;
};
Run Code Online (Sandbox Code Playgroud)
属于上述类型.我不想像inet_ntoa那样将in_addr_t打印到char*.我想看看in_addr_t是什么.它是如何完成的,或者究竟是什么in_addr_t以及为什么它在套接字编程中一次又一次地使用.如果我没有弄错,它被定义为
typedef uint32_t in_addr_t;
所以,如果in_addr_t
是unsigned 32 bit
int我想看看是什么,而不是char *
在stdout上打印192.168.1.1类型的输出.
cni*_*tar 16
众所周知(我们这样做,对吗?)IPv4
地址使用无符号32位整数表示.我们用大数字(或小数字)对人类不太好,所以我们使用点十进制表示法.(你知道你现在在1076000524
吗?我也没有).
但是,自从你挖掘netinet
并发现标准明确规定了什么
的
<netinet/in.h>
报头应定义in_addr
结构,其中应至少包括以下部件包括:
in_addr_t s_addr
这是
in_addr_t
相当于uint32_t
中描述的类型<inttypes.h>
你可以打印出来.
printf("My unreadable addres is %u\n", in.s_addr);
Run Code Online (Sandbox Code Playgroud)
快,什么134744072
代表什么?