怎样通过对方的ip返回对方的计算机名,在线等待

zihan 2003-03-01 03:19:18
下面是我的实现代码,可是返回值为空
AnsiString __fastcall TIPScan::GetName(AnsiString Host)
{
AnsiString Text;
int iReturn=SocketInitialize();
if(iReturn==0)
Text=ResolveIP(Host);
SocketClose();
return Text;
}
int __fastcall TIPScan::SocketInitialize()
{
int iReturn=WSAStartup(Version,&wsData);
if(iReturn==ERROR_SUCCESS&&wsData.wVersion==Version)
return iReturn;
else
return iReturn+1;
}
void __fastcall TIPScan::SocketClose()
{
if(WSAIsBlocking())
WSACancelBlockingCall();
WSACleanup();
}
AnsiString __fastcall TIPScan::ResolveIP(AnsiString Host)
{
AnsiString ComputerName;
hostent *RemoteHost;
RemoteHost=gethostbyaddr(Host.c_str(),Host.Length(),0);
if(RemoteHost!=0)
ComputerName=RemoteHost->h_name;
return ComputerName;
}
我想通过以上的方法返回对方的计算机名,可是就是不成功,为什么??

如果我把上面的后面一部分改成这样,既是通过计算机名返回ip,其中ComputerName是传入的计算机名
RemoteHost=gethostbyname(ComputerName.c_str());
if(RemoteHost!=0)
for(int i=0;RemoteHost->h_addr_list[i]!=0;++i)
{
in_addr addr;
memcpy(&addr,RemoteHost->h_addr_list[i],sizeof(in_addr));
IPV4=IPV4+StrPas(inet_ntoa(addr));
}
return IPV4;
可以正确的返回他的计算机ip,请问哪位用过gethostbyaddr的指点一下!
...全文
74 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
thingking 2003-03-02
  • 打赏
  • 举报
回复
up!
zihan 2003-03-02
  • 打赏
  • 举报
回复
搞定了,谢谢
牧牛人软件 2003-03-01
  • 打赏
  • 举报
回复
int GetNameByIP(char *IP, char *HostName)
{
unsigned int addr;
hostent *hostname;
addr = inet_addr((char FAR *)IP);
hostname = gethostbyaddr((char *)&addr, 4, AF_INET);
if (hostname == NULL)
{
strcpy(HostName, "");
return WSAGetLastError();
}
else
{
strcpy(HostName, hostname->h_name);
return 0;
}
}

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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