本文介绍了如何获得的内部IP,外部IP和默认网关的UPnP的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不知道我怎么会去获得的:

I'm wondering how I'd go about getting the:


  • 内部IP地址;

  • 外部IP地址;和

  • 默认网关

在Windows(的WinSock)和Unix系统。

in Windows (WinSock) and Unix systems.

由于提前,

推荐答案

解决得益于:


#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();
}

这篇关于如何获得的内部IP,外部IP和默认网关的UPnP的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-11 05:03