C++通过域名获取IP地址的方法;调试通过!

// project.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <math.h>
#include <stdio.h>
#include <string.h>
//#include <afx.h>
//#include <Winsock.h>
#include <winsock2.h>
#include <windows.h>
#pragma  comment(lib,"ws2_32.lib")

using namespace std;

bool  GetIpByDomainName(char *szHost, char szIp[100][100], int *nCount);

int _tmain(int argc, _TCHAR* argv[])
{

	int            nCount = 0;
	char        szIp0[100][100];
	char        szDomain[256] = { 0 };
	char        szIp[2048] = { 0 };
	strcpy_s(szDomain, "www.baidu.com");
	GetIpByDomainName(szDomain, szIp0, &nCount);
	int nK = 0;
	for (nK = 0; nK < nCount; nK++)
	{
		strcat_s(szIp, szIp0[nK]);
		strcat_s(szIp, "\r\n");
	}
	//OutputDebugString(szIp);
	return 0;
}


bool  GetIpByDomainName(char *szHost, char szIp[100][100], int *nCount)
{
	WSADATA        wsaData;
	char           szHostname[100];
	HOSTENT   *pHostEnt;
	int             nAdapter = 0;
	struct       sockaddr_in   sAddr;
	if (WSAStartup(0x0101, &wsaData))
	{
		//AfxMessageBox("WSAStartup   failed   %s/n", WSAGetLastError());
		return FALSE;
	}

	pHostEnt = gethostbyname(szHost);
	//pHostEnt = getaddrinfo(szHost);
	if (pHostEnt)
	{
		while (pHostEnt->h_addr_list[nAdapter])
		{
			memcpy(&sAddr.sin_addr.s_addr, pHostEnt->h_addr_list[nAdapter], pHostEnt->h_length);
			char  szBuffer[1024] = { 0 };

			sprintf_s(szBuffer, "%s", inet_ntoa(sAddr.sin_addr));

			strcpy_s(szIp[nAdapter], szBuffer);
			//OutputDebugString(szBuffer);
			nAdapter++;
		}

		*nCount = nAdapter;
	}
	else
	{
		DWORD  dwError = GetLastError();
		//CString  csError;
		//csError.Format("%d", dwError);
		//OutputDebugString(csError);
		//OutputDebugString("gethostbyname failed");
		*nCount = 0;
	}
	WSACleanup();
	return TRUE;

}

 

调试通过

 

还可参考 获取本地ip方法:

https://blog.csdn.net/jite777/article/details/51890782/

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值