gpt4 book ai didi

c - 获取传入套接字连接的源地址

转载 作者:太空狗 更新时间:2023-10-29 16:28:15 26 4
gpt4 key购买 nike

我有一个带有来自客户端的传入套接字的服务器。我需要获取远程客户端的 IP 地址。尝试在 google 中搜索 in_addr 但有点麻烦。有什么建议吗?

最佳答案

您需要 getpeername function :

// assume s is a connected socket

socklen_t len;
struct sockaddr_storage addr;
char ipstr[INET6_ADDRSTRLEN];
int port;

len = sizeof addr;
getpeername(s, (struct sockaddr*)&addr, &len);

// deal with both IPv4 and IPv6:
if (addr.ss_family == AF_INET) {
struct sockaddr_in *s = (struct sockaddr_in *)&addr;
port = ntohs(s->sin_port);
inet_ntop(AF_INET, &s->sin_addr, ipstr, sizeof ipstr);
} else { // AF_INET6
struct sockaddr_in6 *s = (struct sockaddr_in6 *)&addr;
port = ntohs(s->sin6_port);
inet_ntop(AF_INET6, &s->sin6_addr, ipstr, sizeof ipstr);
}

printf("Peer IP address: %s\n", ipstr);

关于c - 获取传入套接字连接的源地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2064636/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com