sockaddr_storage获取ip
时间: 2023-03-25 21:02:45 浏览: 121
socket编程获取IP地址
4星 · 用户满意度95%
可以使用以下代码获取 sockaddr_storage 结构体中存储的 IP 地址:
```c
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
void print_ip_address(struct sockaddr_storage addr) {
char ip_str[INET6_ADDRSTRLEN];
void *addr_ptr;
if (addr.ss_family == AF_INET) {
addr_ptr = &((struct sockaddr_in *)&addr)->sin_addr;
} else {
addr_ptr = &((struct sockaddr_in6 *)&addr)->sin6_addr;
}
inet_ntop(addr.ss_family, addr_ptr, ip_str, sizeof(ip_str));
printf("IP address: %s\n", ip_str);
}
```
其中,`struct sockaddr_storage` 是一个通用的地址结构体,可以存储 IPv4 或 IPv6 地址。`inet_ntop` 函数可以将二进制的 IP 地址转换为字符串形式。在这个例子中,我们使用了 `if` 语句来判断地址的类型,并根据类型来获取地址指针。
阅读全文