void __fastcall TForm1::FormCreate(TObject *Sender)
{
WSAData wsaData;
if (WSAStartup(MAKEWORD(1,1),&wsaData)!=0)
{ //初始化WINSOCK调用
MessageBox(NULL,"Wrong WinSock
Version","Error",MB_OK);
return ;
}
Refresh1Click(Sender); //程序一开始,就调检知IP地址
}
再双击Refresh按钮,在其中加上以下程序
void __fastcall TForm1::Refresh1Click(TObject *Sender)
//刷新IP地址
{
char HostName[80];
LPHOSTENT lpHostEnt;
struct in_addr addr[2];
//本程序假设主机不是多宿主机,即最多只有
// 一块网卡和一个动态IP
for (int i=0; i< 2; i++){
memset(&addr[i],0,sizeof(in_addr));
//对in_addr结构清0,以利后面填写
}
if (gethostname(HostName,sizeof(HostName))==SOCKET_ERROR)
{ // 得到本主机名
MessageBox(NULL,"Can't getting local host name.","Error",MB_OK);
return ;
}
Label3- >Caption=HostName;
lpHostEnt=gethostbyname(HostName);//利用得到的主机名去获得主机结构
if (!lpHostEnt){
MessageBox(NULL,"Yow! Bad host lookup.","Error",MB_OK);
return ;
}
for (int i=0; lpHostEnt- >h_addr_list[i]!=0; i++)
//从主机地址表中得到IP地址
{
memcpy(&addr[i],lpHostEnt- >h_addr_list[i],sizeof(in_addr));
}
Label4- >Caption=inet_ntoa(addr[0]);
Label5- >Caption=inet_ntoa(addr[1]);
}
再双击Refresh按钮,在其中加上以下程序
void __fastcall TForm1::Button2Click(TObject *Sender)
{
WSACleanup(); //释放WINSOCK调用
Close();
}