贝贝花花包包店,精品555皮具,钱夹,皮夹

字体:  

ACE_INET_Addr的问题

sokiiya 发表于: 2008-5-20 14:41 来源: ACE 开发者

如何判断一个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 at 2008-5-20 15:01:49
本机的IP地址,可以用API取得到,用这个地址去比较即可。
winston at 2008-5-20 15:04:35
void  GetLocalIPAddr(std::string &ip)
{
WSADATA wsaData;
char name[155];
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 at 2008-5-20 15:12:46
这个是#include <winsock.h>里的??
跨平台吗
winston at 2008-5-20 15:30:42
别人写的。
没找到ACE有封装,就自己封装一个跨平台的。
sokiiya at 2008-5-20 15:42:24
好的~~~


谢啦:)
okibun0129 at 2008-5-21 15:42:37
参考版主以前贴的关于ACE::get_ip_interfaces的帖子。可以取出本机的当前IP地址的列表。