一个关于gethostbyaddr(const char*, int, int)性能的问题 当指定的IP地址存在对应的域名时,这个函数的速度很快;但是如果指定的IP地址不存在对应的域名,就变得非常之慢,请问有没有解决的办法。谢谢!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用gethostbyaddr()阻塞时间不管成功与否都是4秒左右 CString IProveHOST(CString ip){ CString strRet; strRet.Empty(); ULONG ulIP = inet_addr(ip); SOCKADDR_IN Addr; Addr.sin_addr.S_un.S_addr=inet_addr(ip); Addr.sin_family = AF_INET; Addr.sin_addr.S_un.S_addr = ulIP; hostent *pHosten = gethostbyaddr((char*)&Addr.sin_addr, ip.GetLength(), AF_INET); ASSERT(pHosten!=NULL); strRet = pHosten->h_name; return strRet;} 楼主是想扫描计算机吧。我以前用C++Builder使用gethostbyaddr()写过一个扫描程序,的确很慢。你可以用多线程+延迟控制(局域网中能链上计算机不会大于150ms,看网络状况了。 )建议楼主用sock_stream套接字,connect(),成功确保计算机存在。再使用gethostbyaddr()速度快很多。 HANDLE WSAAsyncGetHostByAddr( HWND hWnd, unsigned int wMsg, const char* addr, int len, int type, char* buf, int buflen);是它异步版的函数,找到时会向hWnd发送消息,这样就不用等了。 [请教]GDI+怎样将bmp保存为单色图 新手的选择 诚心请教一个问题 文件拷贝的问题 怎么得到子窗口的CDocument? 谁有用TC写的,显示bmp图的程序??? WM_PAINT消息在什么时候发送?为什么DoModal出来的对话框,在客户区移动,第一次不发送WM_PAINT消息? 往CImageList里面加图片的问题 菜鸟问题:(1)如何设置一个控件的光标? (2)如何弹出菜单? hero200?急需帮助 不明白gethostbyaddr第一个参数的用法 Cstring 如何清空重来呢?
{
CString strRet;
strRet.Empty();
ULONG ulIP = inet_addr(ip);
SOCKADDR_IN Addr;
Addr.sin_addr.S_un.S_addr=inet_addr(ip);
Addr.sin_family = AF_INET;
Addr.sin_addr.S_un.S_addr = ulIP;
hostent *pHosten = gethostbyaddr((char*)&Addr.sin_addr, ip.GetLength(), AF_INET);
ASSERT(pHosten!=NULL);
strRet = pHosten->h_name;
return strRet;
}
我以前用C++Builder使用gethostbyaddr()写过一个扫描程序,的确很慢。
你可以用多线程+延迟控制(局域网中能链上计算机不会大于150ms,看网络状况了。 )建议楼主用sock_stream套接字,connect(),成功确保计算机存在。再使用gethostbyaddr()速度快很多。
HANDLE WSAAsyncGetHostByAddr(
HWND hWnd,
unsigned int wMsg,
const char* addr,
int len,
int type,
char* buf,
int buflen
);
是它异步版的函数,找到时会向hWnd发送消息,这样就不用等了。