获取本机IP地址 2011.12.21

本文介绍了一个使用C++编写的程序,用于获取本地计算机的IP地址。通过调用WSAStartup、gethostname和gethostbyname等Windows API函数,程序能够成功地获取并打印出本地计算机的IP地址。
#include <iostream>
using namespace std;

#include <Windows.h>


#pragma comment( lib, "ws2_32.lib" )

char * GetIpList()

{

	WORD wVersionRequested;

	WSADATA wsaData;

	int err;

	wVersionRequested = MAKEWORD( 2, 2 );

	err = WSAStartup( wVersionRequested, &wsaData );

	if ( err != 0 )

	{

		cout<<"WSAStartup failed !"<<endl;

		return false;

	}

	char szhn[256];

	int nStatus = gethostname(szhn, sizeof(szhn));

	if (nStatus == SOCKET_ERROR )

	{

		cout<<"gethostname failed, Error code: "<<WSAGetLastError()<<endl;

		return false;

	}

	HOSTENT *host = gethostbyname(szhn);
	char * ipaddress =NULL;

	if (host != NULL)
	{
		ipaddress = inet_ntoa( *(IN_ADDR*)host->h_addr_list[0]);

	}

	WSACleanup();

	return ipaddress;

}

int main(int argc, char *argv[])

{
	char * ip_address = NULL;
	ip_address = GetIpList();
	cout<<ip_address<<endl;
	return 0;

}


输出:

192.168.1.113

这是我本机的ip地址。


逻辑:先获取本机计算机名,然后通过计算机名获取本机的ip地址。

因为,我本机就一个网卡,所以只获取了一个,假如机子上有多个网卡的话,h_addr_list[i],

根据有几个i,一次获取就行了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值