通过IP地址获取主机名的程序!!急!!在线等!!

talkingmute 2005-03-23 05:14:28
小弟写了个通过IP获取主机名程序,可是当一点击Button1时就提示内存错误!请大家帮助看看了,十分感谢!!

void __fastcall TForm1::Button1Click(TObject *Sender)
{
Edit2->Text=Addtohost(Edit1->Text);
}
//---------------------------------------------------------------------------
AnsiString __fastcall TForm1::Addtohost(AnsiString ipaddr)
{
struct hostent *hostname;
unsigned int addr;
AnsiString host;
addr=inet_addr((const char *)(ipaddr.c_str()));
hostname=gethostbyaddr((const char *)&addr,4,AF_INET);
host=AnsiString(hostname->h_name);
return host;
}
...全文
215 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
free1688 2005-03-24
  • 打赏
  • 举报
回复
这不是你的问题,系统在调用时需要一定的资源的。
talkingmute 2005-03-23
  • 打赏
  • 举报
回复
哦,谢谢您!我忘记判断hostname了,太粗心了!

还有个问题,我的程序比较大,一运行这IP地址到主机名的转换程序时,就变的很缓慢,象假死一样...

不知有什么好的方法可以避免吗??
ccrun.com 2005-03-23
  • 打赏
  • 举报
回复
String Ip2Host(String strIPAddr)
{
SOCKADDR_IN saddr;
WORD wVersionRequested;
WSADATA wsaData;
int nErrorNum;
unsigned int addr;
struct hostent *hostname;
String strRet;

wVersionRequested = MAKEWORD(2, 2);
nErrorNum = WSAStartup(wVersionRequested, &wsaData);
if(nErrorNum != 0)
{
ShowMessage("Error! WSAStartup failed!\n");
return "";
}
addr = inet_addr((char FAR*)(strIPAddr.c_str()));
hostname = gethostbyaddr((char *)&addr, 4, AF_INET);
if(hostname)
strRet = hostname->h_name;
else
strRet = "";
WSACleanup();
return strRet;
}
// 调用时:
ShowMessage(Ip2Host("192.168.0.1"));

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧