回答
解决了感谢: http://www.codeguru.com/forum/showthread.php?t=233261
#include <winsock2.h>
#include <stdio.h>
#include <stdlib.h>
#pragma comment(lib, "ws2_32.lib")
int main(int nArgumentCount, char **ppArguments)
{
WSADATA WSAData;
// Initialize WinSock DLL
if(WSAStartup(MAKEWORD(1, 0), &WSAData))
{
// Error handling
}
// Get local host name
char szHostName[128] = "";
if(gethostname(szHostName, sizeof(szHostName)))
{
// Error handling -> call 'WSAGetLastError()'
}
SOCKADDR_IN socketAddress;
hostent *pHost = 0;
// Try to get the host ent
pHost = gethostbyname(szHostName);
if(!pHost)
{
// Error handling -> call 'WSAGetLastError()'
}
char ppszIPAddresses[10][16]; // maximum of ten IP addresses
for(int iCnt = 0; (pHost->h_addr_list[iCnt]) && (iCnt < 10); ++iCnt)
{
memcpy(&socketAddress.sin_addr, pHost->h_addr_list[iCnt], pHost->h_length);
strcpy(ppszIPAddresses[iCnt], inet_ntoa(socketAddress.sin_addr));
printf("Found interface address: %s\n", ppszIPAddresses[iCnt]);
}
// Cleanup
WSACleanup();
}
的Linux:
ifconfig -a gives internal ip
netstat -a gives default gateway
的Windows:
ipconfig /all gives internal ip
netstat -a gives default gateway
我不知道如何明确地确定在任一系统
对不起,我忘了提及我的意思是在C/++中:D – Saul 2009-11-17 00:01:45
在Linux或Windows上,我没有在'netstat -a'中看到我的默认网关?我看到我机器上的连接列表,包括监听端口,但没有在列表中的哪个位置显示默认网关的主机名或IP地址。我错过了什么? – mrduclaw 2010-09-15 14:04:49
我的错误,netstat -r给出默认网关 – ennuikiller 2010-09-15 21:40:56
有外部IP不是在Windows和UNIX上运行的通用机制。在Windows下,你想从GetIfTable()
开始。在大多数UNIX系统下,请尝试getifaddrs()
。这些将给你各种东西,如每个接口的IP地址。
我不确定如何获取默认网关。我猜想它可以通过调用sysctl
。您可能需要从the netstat utility的来源开始。
外部公共地址是电脑从来不知道的东西。唯一的办法是连接到互联网上的东西,并告诉你你来自哪个地址。这是IPNAT的一个经典问题。
- 1. 如何获得外部IP成功
- 2. 内部IP地址和外部IP地址之间的区别
- 3. Sinatra外部IP
- 4. Android获取外部IP
- 5. 如何使用Python获取默认网关IP?
- 6. 如何从node.js获得服务器的外部ip
- 7. 如何获得Oracle内部PC的本地IP地址ApEx
- 8. 使用外部IP地址访问内部网络资源
- 9. 如何在局域网中获取外部IP地址?
- 10. 来自外部和内部IP的Http请求
- 11. 如何在linux中使用ioctl获取网关ip和nameserver ip
- 12. nmap返回外部IP的
- 13. 内部类和获得外部成员
- 14. 如何获得Virtual Box访问默认本地主机以外的IP
- 15. 在Java中获取'外部'IP地址
- 16. 获取外部IP地址10
- 17. 如何从Java中Ping外部IP Android
- 18. 如何发布到外部IP?
- 19. 使用VB.Net获取IP地址,子网,默认网关,DNS1和DNS2
- 20. 无法从外部IP
- 21. django错误(外部IP)
- 22. Hadoop namenode不听外部IP
- 23. 获取非HTTP流量到OpenShift Origin(入口IP /外部IP)?
- 24. 将JVM绑定到默认IP以外的IP
- 25. 静态内部IP地址和VNet和保留IP
- 26. 国家和外部IP bash脚本
- 27. 全部IP子网中(C)
- 28. 如何获取C#中的外部IP的mac地址?
- 29. RewriteRule将域映射到内部未知的外部IP
- 30. Django的错误(外部IP):内部服务器错误:/favicon.ico
要知道,一台机器可以有几个不同的IP地址。 – pmg 2009-11-15 20:46:45