Tag: ip address

如何在Windows下获取IP地址

所有我已经有一个“socketfd”,我想知道如何使用它来检索本地IP地址。 在linux下,我可以做这样的事情(不完全正确): struct ifreq ifr; ifr.ifr_addr.sa_family = AF_INET; ioctl(socketfd, SIOCGIFADDR, &ifr); char *address = inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr); 但是,在Windows上,我如何实现相同的目标? (不使用MFC)非常感谢。 编辑:也许我的主机有多个IP地址,我想要一个“连接”与“socketfd”。

逐字节打印4字节整数时出现意外行为

我有这个示例代码,用于将32位整数转换为ip地址。 #include int main() { unsigned int c ; unsigned char* cptr = (unsigned char*)&c ; while(1) { scanf(“%d”,&c) ; printf(“Integer value: %u\n”,c); printf(“%u.%u.%u.%u \n”,*cptr, *(cptr+1), *(cptr+2), *(cptr+3) ); } } 此代码为输入2249459722提供了错误的输出。 但当我更换 scanf(“%d”,&c) ; 通过 scanf(“%u”,&c) ; 输出结果是正确的。 PS :我知道inet_ntop和inet_pton 。 我期待的答案不是建议那些答案。

动态更改源IP地址

我有一个服务器有几个不同的IP地址。 此时,每个IP都可以接收UDP请求,但它始终与回复的IP相同,请求者不喜欢。 总而言之,这是所有基本代码: int sock; socklen_t clilen; struct sockaddr_in serv_addr, cli_addr; memset((char*)&serv_addr, 0, sizeof(serv_addr)); sock = socket(AF_INET, SOCK_DGRAM, 0); serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = htonl(INADDR_ANY); serv_addr.sin_port = htons(PORT); … recvfrom(sock, buffer, BUFLEN, 0, (struct sockaddr *)&cli_addr, &clilen); … sendto(sock, resData, resLen, 0, (struct sockaddr *)&cli_addr, sizeof(cli_addr)); 我希望能够以某种方式指定哪个IP用于发送回我的数据包(这可能因每个请求而有所不同),但我不知道如何使用套接字实现这一点。 我在这个领域并不是那么有经验,所以我能得到的所有帮助都非常感激。 编辑如下 我已经在接受的答案中找到了一个潜在的解决方案: 如何在Linux中重新绑定udp套接字 但是,出现了一个新问题。 我如何知道哪个IP /接口收到了请求? 这样我就可以使用该IP […]

是否有库函数来确定IP地址(IPv4和IPv6)在C / C ++中是私有/本地的?

1,给定一个32位整数值,如何准确判断它是否是私有IPv4地址。 2,给定一个128位整数值,如何准确判断它是否是私有IPv6地址。 考虑不同平台上IP地址的字节顺序,每次都要编写这样一个常见的小函数是容易出错的。 所以我认为应该有一个库函数,有吗?

如何从C中的IPv4地址获取主机名?

我需要一个简单的函数,在给定char* IPAddress输出char* hostname 。 任何想法或提示? 另外,从主机名获取IP地址的最简单方法是gethostbyname()和inet_ntoa()是正确的吗?

什么是Windows XP等效的inet_pton或InetPton?

我需要确定特定字符串是否是有效的IPv4或IPv6地址文字。 如果我理解正确,在POSIX系统上执行此操作的正确方法是使用inet_pton将其转换为网络地址结构并查看是否成功。 Windows Vista和更高版本的InetPton基本上都是一样的。 但据我所知,Windows XP并未声明其中任何一种,我需要能够在XP上正确执行此操作。 那么,问题是使用什么系统function来做到这一点? 最糟糕的情况是,我可以编写一个函数来自己解析它,但我更喜欢一个标准的系统函数,因此经过全面测试并正确处理所有角落情况等等。 已经糟糕的是,微软不能像其他人一样宣布inet_pton , InetPton来推出更新的操作系统。

在POSIX C中获取自己的外部IP地址

我希望获得自己的IP地址,以便将该信息发布到点对点网络。 在POSIX / C中我们有getaddrinfo(NULL, …) ,但这似乎总是返回INADDR_ANY或INADDR_LOOPBACK ,这对我来说没用。 有什么建议?

获取我的IP地址

我在小型网络上有一台电脑,所以我的IP是192.168.2.100。 我想要获得真正的IP。 我下载了无ip客户端,但这对于这么简单的事情来说似乎很麻烦。 我创建了这个php脚本,它获得了http://www.ip-adress.com/ page并检索了它给我的ip。 有更简单的方法吗? 使用C,WSH或其他东西。 或者,如果有一个更简单的PHP方式请告诉我。 当我拿到ip时,我会将它上传到我的ftp站点,以便我可以看到ip从工作中。

如何在C中为客户端提供特定的IP地址

我试图在C中实现一个简单的客户端和服务器,我在网上找不到如何为客户端设置特定IP地址的示例。 这是我到目前为止所得到的: sockfd = socket(PF_INET, SOCK_STREAM, 0); if (sockfd == -1) { } address.sin_family = AF_INET; address.sin_addr.s_addr = inet_addr(); address.sin_port = htons(); len = sizeof(address); int result = connect(sockfd, (struct sockaddr *)&address, len); 在服务器端,我检查客户端IP地址,我总是得到127.0.0.1 我想改变一些与众不同的东西。

如何了解C中接口的IP地址?

假设我正在运行一个名为IpAddresses.c的程序。 我希望该程序根据每个接口获取此设备具有的所有IP地址。 就像ifconfig一样。 我怎样才能做到这一点? 我对ioctl了解不多,但我读到它可能会对我有所帮助。