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”“连接”的IP地址。
all
i already had a "socketfd", and i was wondering how to use it to retrieve the local ip address.
under linux, i can do something like this(not exactly correct):
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);
but, on Windows, how can i achieve the same goal? (not using MFC)
many thanks.
edit: maybe my host has multiple ip addresses, and i want the one "connected" with "socketfd".
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果套接字已连接,则其上的
getsockname()
将使用套接字的本地名称填充struct sockaddr
。这适用于两种操作系统(以及任何带有 BSD 套接字的操作系统)。If the socket is connected, then
getsockname()
on it will fill astruct sockaddr
with the local name for the socket. This works on both OSes (and anything with BSD sockets).与
#include
with
#include <winsock2.h>