如何在Windows中从套接字获取IP地址

5

我有一个在Windows中使用的DWORD socket。我需要知道它是连接到互联网还是本地连接,例如localhost。是否有一种好的方法可以仅通过socket获取连接的地址?或者有更好的方法来判断连接是否为本地连接?


IPv6 需要小心处理。你很可能没有自己创建套接字(否则你会记得它连接到了什么),所以你可能正在处理其他地方创建的某个套接字。而且由于这超出了你的控制,因此它可能使用 IPv6。 - MSalters
1个回答

5
您可能需要调用getpeername()函数。使用它非常基本,您只需传递一个sockaddr指针和一个长度,它就会为您填充数据。
至于确定连接是否为本地连接,getaddrinfo()函数可以提供所有可用本地地址的列表。您可以将getpeername()的结果与本地地址列表进行比较。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接