ACE_INET_Addr的问题
如何判断一个ACE_INET_Addr是否是本机?用ACE_INET_Addr创建本机的地址有好多种:
ACE_INET_Addr local("localhost");
ACE_INET_Addr local(3333, "localhost");
ACE_INET_Addr local(3333, "192.168.....");//自己的ip
可是这三种方法local.get_host_name都不一样,
分别是:
localhost,mycomputer,mycomputer.private等,不知道怎么判断如何判断一个ACE_INET_Addr是否是本机了。
期待指点呵呵~~ 本机的IP地址,可以用API取得到,用这个地址去比较即可。 voidGetLocalIPAddr(std::string &ip)
{
WSADATA wsaData;
char name;
PHOSTENT hostinfo;
if ( WSAStartup( MAKEWORD(2,0), &wsaData ) == 0 ) {
if( gethostname ( name, sizeof(name)) == 0) {
if((hostinfo = gethostbyname(name)) != NULL) {
//这些就是获得IP的函数
ip = inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list);
}
}
WSACleanup( );
}
} 这个是#include <winsock.h>里的??
跨平台吗 别人写的。
没找到ACE有封装,就自己封装一个跨平台的。 好的~~~
谢啦:) 参考版主以前贴的关于ACE::get_ip_interfaces的帖子。可以取出本机的当前IP地址的列表。
页:
[1]