在头文件中定义两个函数
int GetLocalHostName(CString &sHostName);
int GetIpAddress(const CString &sHostName, BYTE &f0, BYTE &f1, BYTE &f2, BYTE &f3);-
在cpp文件中实现函数
int CMyClass::GetLocalHostName(CString &sHostName)
{
char szHostName[256];
int nRetCode;
nRetCode = gethostname(szHostName, sizeof(szHostName));
if (nRetCode != 0)
{
//产生错误
sHostName = _T("没有取得");
return GetLastError();
}
sHostName = szHostName;return 0;
}
int CMyClass::GetIpAddress(const CString &sHostName, BYTE &f0, BYTE &f1, BYTE &f2, BYTE &f3)
{
struct hostent FAR * lpHostEnt = gethostbyname(sHostName);
if (lpHostEnt == NULL)
{
//产生错误
f0 = f1 = f2 = f3 = 0;
return GetLastError();
}
//获取IP
LPSTR lpAddr = lpHostEnt->h_addr_list[0];
if (lpAddr)
{
struct in_addr inAddr;
memmove(&inAddr, lpAddr, 4);
f0 = inAddr.S_un.S_un_b.s_b1;
f1 = inAddr.S_un.S_un_b.s_b2;
f2 = inAddr.S_un.S_un_b.s_b3;
f3 = inAddr.S_un.S_un_b.s_b4;
}
return 0;
}
- 使用,变量“m_ctrlIpAddrNetIP”是CIPAddressCtrl类型的控件
BYTE f0, f1, f2, f3;
CString strHostname;
GetLocalHostName(strHostname);
GetIpAddress(strHostname, f0, f1, f2, f3);
m_ctrlIpAddrNetIP.SetAddress(f0, f1, f2, f3);