inet_pton
是一个在 C 语言中用于将文本形式的 IP 地址转换为二进制形式的函数。它的全名是 “Internet Protocol address conversion, presentation to network”。
函数原型
#include <arpa/inet.h>
int inet_pton(int af, const char *src, void *dst);
参数说明
af
:地址族,通常使用AF_INET
(IPv4)或AF_INET6
(IPv6)。src
:指向包含点分十进制形式(对于 IPv4)或冒号分隔十六进制形式(对于 IPv6)的字符串。dst
:指向一个足够大的缓冲区,用于存储转换后的二进制地址。对 IPv4,该缓冲区应至少为struct in_addr
大小;对 IPv6,应至少为struct in6_addr
大小。
返回值
- 成功时返回 1。
- 如果提供了无效的地址,则返回 0。
- 如果发生错误,则返回 -1,并且可以通过 errno 获取详细错误信息。
示例代码
下面是一个简单的例子,演示如何使用 inet_pton
将字符串 IP 地址转换为二进制格式:
#include <stdio.h>
#include <string.h>
#include <arpa/inet.h>
int main() {
const char *ip_str = "192.168.1.1";
struct in_addr addr;
// Convert IPv4 address from text to binary form
if (inet_pton(AF_INET, ip_str, &addr) <= 0) {
perror("inet_pton error");
return 1;
}
printf("The binary form of %s is: %u\n", ip_str, addr.s_addr);
return 0;
}
在这个例子中,我们将字符串 "192.168.1.1"
转换为其对应的二进制格式并打印出来。
内容由零声教学AI助手提供,问题来源于学员提问