inet_pton
是一个用于将IPv4或IPv6地址从文本字符串转换为网络字节顺序的二进制形式的函数。它常用于网络编程,特别是在处理IP地址时。
函数原型
int inet_pton(int af, const char *src, void *dst);
参数
af
: 地址族,可以是AF_INET
(表示IPv4)或AF_INET6
(表示IPv6)。src
: 指向要转换的字符串形式的IP地址的指针。dst
: 指向用于存储结果的缓冲区指针,通常是一个struct in_addr
(对于IPv4)或struct in6_addr
(对于IPv6)。
返回值
- 成功时返回1。
- 输入参数不合法时返回0。
- 出错时返回-1,并设置 errno。
示例
下面是一个使用 inet_pton
的简单示例:
#include <stdio.h>
#include <string.h>
#include <arpa/inet.h>
int main() {
struct sockaddr_in sa;
// IPv4地址
const char *ip = "192.168.1.1";
// 将字符串IP地址转换为二进制形式
if (inet_pton(AF_INET, ip, &(sa.sin_addr)) != 1) {
fprintf(stderr, "Invalid IP address\n");
return 1;
}
printf("IP address in binary form: %x\n", sa.sin_addr.s_addr);
return 0;
}
在这个示例中,我们将字符串形式的IP地址 "192.168.1.1"
转换成了二进制格式并存储在 sockaddr_in
结构中的 sin_addr
字段。
内容由零声教学AI助手提供,问题来源于学员提问