局域网同网段,已知内网一IP地址如果编程知道其计算机名?

BCBPLC 2011-09-04 08:24:28
局域网同网段,已知内网一IP地址如果编程知道其计算机名?
如: 192.168.1.5的计算机名?
...全文
73 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccrun.com 2011-09-04
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 bcbplc 的回复:]
我编用多线程快速取MAC地址,速度很快,想顺便把计算机也取来,发现太慢,
就放弃计算机名了。
单位里大局域网用的是静态IP,IP地址很乱,许多人不知某IP是否被用过,
我想编个网页显示所有IP及MAC地址。
[/Quote]
遍历段内所有IP,然后 SendARP 即可。
zzbinfo 2011-09-04
  • 打赏
  • 举报
回复
我不知道你这个主要是用在什么情况下的,你如果只是要获得主机名可以考虑WSAAsyncGetHostByAddr,这个是异步处理的,也可以用多线程
ccrun.com 2011-09-04
  • 打赏
  • 举报
回复
BCBPLC 2011-09-04
  • 打赏
  • 举报
回复
我编用多线程快速取MAC地址,速度很快,想顺便把计算机也取来,发现太慢,
就放弃计算机名了。
单位里大局域网用的是静态IP,IP地址很乱,许多人不知某IP是否被用过,
我想编个网页显示所有IP及MAC地址。

BCBPLC 2011-09-04
  • 打赏
  • 举报
回复
能成功,但速度慢,有防火墙时就取不到,
子程序放在多线程里象死机一样。
zzbinfo 2011-09-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bcbplc 的回复:]
delphi就是看得有点别扭。我试试。
[/Quote]C++的代码,记得#include <winsock2.h>
BCBPLC 2011-09-04
  • 打赏
  • 举报
回复
delphi就是看得有点别扭。我试试。
zzbinfo 2011-09-04
  • 打赏
  • 举报
回复
AnsiString   Ip2Host(AnsiString   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;
}


void __fastcall TForm1::Button1Click(TObject *Sender)
{
// 调用时:
ShowMessage(Ip2Host( "192.168.0.104 "));
}

13,825

社区成员

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

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