sokiiya 发表于 2008-5-20 14:41:59

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是否是本机了。

期待指点呵呵~~

winston 发表于 2008-5-20 15:01:49

本机的IP地址,可以用API取得到,用这个地址去比较即可。

winston 发表于 2008-5-20 15:04:35

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( );
}
}

sokiiya 发表于 2008-5-20 15:12:46

这个是#include <winsock.h>里的??
跨平台吗

winston 发表于 2008-5-20 15:30:42

别人写的。
没找到ACE有封装,就自己封装一个跨平台的。

sokiiya 发表于 2008-5-20 15:42:24

好的~~~


谢啦:)

okibun0129 发表于 2008-5-21 15:42:37

参考版主以前贴的关于ACE::get_ip_interfaces的帖子。可以取出本机的当前IP地址的列表。
页: [1]
查看完整版本: ACE_INET_Addr的问题