Get Local IP Address and Set in the IP Control

void GetLocalIPAddress()
{
	char sHostName[100];
	WORD wVersionRequested;
	WSADATA wsaData;
	wVersionRequested = MAKEWORD( 2, 0 );

	if ( WSAStartup( wVersionRequested, &wsaData ) == 0 )
	{
		gethostname(sHostName,sizeof(sHostName));
		struct hostent FAR * lpHostEnt = gethostbyname(sHostName);
		if(lpHostEnt == NULL)
		{
			MessageBox(_T("error"));
		}
		//获取IP
		LPSTR lpAddr = lpHostEnt->h_addr_list[0];
		if(lpAddr)
		{
			struct in_addr inAddr;
			memmove(&inAddr,lpAddr,4);
			CString str;
			str = inet_ntoa(inAddr);
			m_edit = str;
			UpdateData(FALSE);

			DWORD  dw1 = inet_addr(inet_ntoa(inAddr));
			WORD   wd1 = LOWORD(dw1);//取高十六位
			WORD   wd2 = HIWORD(dw1);//取低十六位
			BYTE  bte1 = LOBYTE(wd1);
			BYTE  bte2 = HIBYTE(wd1);
			BYTE  bte3 = LOBYTE(wd2);
			BYTE  bte4 = HIBYTE(wd2);
			m_ip.SetAddress(bte1,bte2,bte3,bte4);
		}
		WSACleanup();
	}
}


void GetIPCString()
{
	WSADATA wsadata;
	if(0 != WSAStartup(MAKEWORD(2, 2), &wsadata))   //初始化
	{
		AfxMessageBox(L"初始化网络环境失败!");
		return;
	}
	char szHostName[MAX_PATH + 1];
	gethostname(szHostName, MAX_PATH);  //得到计算机名
	hostent *p = gethostbyname(szHostName); //从计算机名得到主机信息
	if(p == NULL)
	{
		AfxMessageBox(L"得到本机网络信息失败!");
		return;
	}
	CString m_strName;
	m_strName = szHostName;       //保存主机名
	AfxMessageBox(m_strName);
	int nCount = 0;                 //保存主机地址
	char *pIP  = inet_ntoa(*(in_addr *)p->h_addr_list[0]);//将32位IP转化为字符串IP
	CString m_strAddr;
	USES_CONVERSION;
	m_strAddr  = A2W(pIP);
	m_edit     = m_strAddr;
	UpdateData(FALSE);
	WSACleanup();               //释放Winsock API
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值