20CN网络安全小组第一代论坛
发表新主题  发表回复

个人资料 | 社区目录 用户登录 | | 论坛搜索 | 常见问题 | 论坛主页
  下一个最老的主题   下一个最新的主题
» 20CN网络安全小组第一代论坛   » 电 脑 技 术   » 编程破解   » vb winsock如何获得动态ip?

   
作者 标题: vb winsock如何获得动态ip?
绝网
未注册


图标 1  发表于         编辑/删除帖子   引用原文回复  
vb winsock如何获得动态ip?

------------------
网海茫茫 孤灯一处,
绝对网络 无限人生.
--绝网

IP: 已记录
NetDemon
初级成员
编号: 2

评价成员
图标 1  发表于    NetDemon的个人资料   发送 Email 给NetDemon   发送新的短讯      编辑/删除帖子   引用原文回复  
这是C++的,vb的照这个改一下,
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();

}

------------------
微软给了我窗户,因此UNIX给了我房子
微软给我窗户了吗?没有
所以UNIX没有给了我房子
我仍然游荡在Internet上

发表: 4 | 注册: 2005-02-27  |  IP: 已记录

 
发表新主题  发表回复 关闭主题 突出主题 移动主题 删除主题 下一个最老的主题   下一个最新的主题
 - 适于打印的主题视图
转到:
联系我们 | 20CN网络安全小组

Powered by Infopop Corporation
UBB.classic™ 6.5.0
NetDemon修改版 1.5.0, 20CN网络安全小组 版权所有。