控制台程序获取主机IP例子

封装的CInitSock类
#include<winsock.h>
#pragma comment(lib,"WS2_32")
#pragma once
class CInitSock
{
public:
	CInitSock(BYTE minorVer =2,BYTE majorVer = 2)
	{
		WSADATA wsaData;
		WORD sockVersion = MAKEWORD(minorVer,majorVer);
		if(::WSAStartup(sockVersion,&wsaData)!= 0)
		{exit(0);}

	}
	~CInitSock()
	{::WSACleanup();}
};


程序代码:

#include"../common/InitSock.h"
#include"stdio.h"
CInitSock initSock;                                   //初始化Winsock库
void main()
{
	char szHost[256];                                 //获取本地主机名称

	::gethostname(szHost,256);                        //通过主机名的到地址信息

	hostent *pHost = ::gethostbyname(szHost);         //打印出所有IP地址
	in_addr addr;
	for(int i = 0;;i++)
	{
		char *p = pHost->h_addr_list[i];             //p指向一个32位的IP地址
		if(p == NULL)
			break;
		memcpy(&addr.S_un.S_addr,p,pHost->h_length);
		char *szIp = ::inet_ntoa(addr);
		printf("本机IP地址:%s \n",szIp);

	}

}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值