inet_pton 赋值给 sockaddr_in
时间: 2024-01-24 15:03:43 浏览: 130
您可以使用 `inet_pton` 函数将一个 IPv4 或 IPv6 地址转换为二进制形式,并将其赋值给 `sockaddr_in` 结构体的 `sin_addr` 字段。
下面是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <arpa/inet.h>
int main() {
const char *ip = "127.0.0.1"; // 示例 IPv4 地址
struct sockaddr_in sa;
// 将 IPv4 地址转换为二进制形式
if (inet_pton(AF_INET, ip, &(sa.sin_addr)) <= 0) {
printf("Invalid address\n");
exit(EXIT_FAILURE);
}
// 打印二进制形式的 IP 地址
printf("Binary IP: %x\n", sa.sin_addr.s_addr);
return 0;
}
```
在上述示例中,我们将 `"127.0.0.1"` 这个 IPv4 地址转换为二进制形式,并将其赋值给 `sockaddr_in` 结构体的 `sin_addr` 字段。通过 `inet_pton` 函数的返回值可以判断地址是否有效。最后,我们打印了转换后的二进制 IP 地址。
请注意,在使用 `inet_pton` 函数之前,需要包含 `<arpa/inet.h>` 头文件。另外,`sockaddr_in` 结构体需要在代码中定义和初始化,具体的字段可以根据实际需求进行设置。
阅读全文