您的位置:首页 > 其它

Get Local IP Address and Set in the IP Control

2015-10-08 17:21 495 查看
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
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: