在没有文本解析的情况下初始化in_addr_t

问题描述:

所以基本上我想用特定的地址初始化in_addr_t并从文本中解析它毫无意义。人们很容易做这样的事情:在没有文本解析的情况下初始化in_addr_t

in_addr_t foo = network_byte_order(127 << 24 | 0 << 16 | 0 << 8 | 99 << 0}; 

对于127.0.0.99,然后在宏包装它,所以它的工作原理方便任何地址...不过我首先要检查是否有人知道这方面的任何现有的宏,最好是“官方”?

+0

你应该投 2012-08-10 21:06:27

+0

使用char [4]和uint32的联合? – Gir 2012-08-10 21:07:46

+0

@Gir那是不确定的行为我相信 – 2012-08-10 21:08:28

这里没有现有的宏。看看INADDR_LOOPBACK如何在netinet/in.h中定义这个例子。它只是一个十六进制常数,比你更简单的方法:

# define INADDR_LOOPBACK  ((in_addr_t) 0x7f000001) /* Inet 127.0.0.1. */ 

所以你的方法很好。

你应该在你的位置功能network_byte_order的使用标准htonl()