Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在PC中查找连接到InterNet的IP地址_C++_Tcp_Network Programming - Fatal编程技术网

C++ 在PC中查找连接到InterNet的IP地址

C++ 在PC中查找连接到InterNet的IP地址,c++,tcp,network-programming,C++,Tcp,Network Programming,服务器计算机有多个IP,其中一个IP与本地LAN和 另一个与互联网相连 服务器应用程序需要绑定IP和端口,以便能够侦听客户端。 我能够在服务器机器中获得所有Ip,但在查找时遇到问题 活动IP即IP连接的internet 以下代码将给出系统中的所有IP char chHostName[MAX_PATH]; if ( gethostname(chHostName, sizeof(chHostName)) == SOCKET_ERROR) { return ; }

服务器计算机有多个IP,其中一个IP与本地LAN和 另一个与互联网相连

服务器应用程序需要绑定IP和端口,以便能够侦听客户端。 我能够在服务器机器中获得所有Ip,但在查找时遇到问题 活动IP即IP连接的internet

以下代码将给出系统中的所有IP

 char chHostName[MAX_PATH];

  if ( gethostname(chHostName, sizeof(chHostName)) == SOCKET_ERROR)
  {
      return ;
  }    
struct hostent *phe = gethostbyname(chHostName);

  if (phe == 0)
  {    
      return ;

  }
//struct in_addr addrLocalIP;

  for (int i = 0; phe->h_addr_list[i] != 0; ++i) 
  {

    memcpy(&m_addrLocal.sin_addr.S_un, phe->h_addr_list[i], sizeof(struct in_addr));        
  } 
一,。在系统中的多个IP中,有没有办法找到与internet连接的IP。
2.通过上述程序获取的最后一个IP是否始终是与Internet连接的IP?

请参阅和相关答案套接字不知道它们的用途。您的应用程序必须从配置文件或类似文件中获取internet NIC的IP地址。

1。您必须解析路由表,并假设默认网关是上行链路,通常是2。我想,如果在某个特定的界面上没有跟踪路由,你永远无法真正分辨。没有办法知道。根据程序无法控制的路径和路由表,可以将零个或多个IP路由到internet。