1 函数GetComputerName可获得本地计算机的NetBIOS名称 该名称在系统启动时从注册表中读取 如果本地计算机是群集计算机上的一个节点,则返回群集虚拟服务器的名称
BOOL GetComputerName(LPTSTR lpBuffer,LPDWORD lpnSize)
2 gethostname函数获得本地计算机名
int gethostname(char* name,int namelen);
3 gethostbyname函数从主机名数据库中得到对应的“主机”(有名字和地址标志),注意这里得到的主机可能是多个而不只是一个
struct hostent* FAR gethostbyname(const char* name)
4 gethostbyaddr函数可以从网络地址得到对应的主机(由名字和地址标识),注意这里得到的主机可能是多个而不只一个
struct HOSTENT* FAR gethostbuaddr(const char* addr,int len ,int type)
5 获取计算机的子网掩码
函数GetAdaptersInfo()可以获得本地计算机的网络信息,从而获得该计算机的子网掩码
void CComputerNetBiosNamexDlg::OnComputerNetBiosName()
{
WSADATA wsaData;
WSAStartup(MAKEWORD(1,1),&wsaData);
char buffer[50];
DWORD nSize=strlen(buffer);
GetComputerName(buffer,&nSize );
SetDlgItemText(IDC_ComputerNetBiosName,buffer);
WSACleanup();
}
void CComputerNetBiosNamexDlg::OnLOADComputername()
{
WSADATA wsaData;
WSAStartup(MAKEWORD(1,1),&wsaData);
char name[50];
gethostname(name,strlen(name));
SetDlgItemText(IDC_LOADComputername,name);
WSACleanup();
}
void CComputerNetBiosNamexDlg::OnComputer()
{
WSADATA wsaData;
WSAStartup(MAKEWORD(1,1),&wsaData);
char name[50];
gethostname(name,strlen(name));
struct hostent* pHost;
pHost=gethostbyname(name);
SetDlgItemText(IDC_Computer,pHost->h_name );
for(int i=0;pHost!=NULL&& pHost->h_addr_list[i]!=NULL;i++)
{
CString str;
str=inet_ntoa(*(struct in_addr*)pHost->h_addr_list[i]);
m_list.AddString(str);
}
WSACleanup();
}
void CComputerNetBiosNamexDlg::Ongethostbuaddr()
{
WSADATA wsaData;
WSAStartup(MAKEWORD(1,1),&wsaData);
DWORD dwIPAddr;
dwIPAddr=inet_addr("192.168.0.2");
hostent* pht;
pht=gethostbyaddr((LPSTR)&dwIPAddr,4,AF_INET);
MessageBox(pht->h_name );
WSACleanup();
}