当前位置: 首页>>代码示例>>C++>>正文


C++ SockAddr::resolveAddr方法代码示例

本文整理汇总了C++中SockAddr::resolveAddr方法的典型用法代码示例。如果您正苦于以下问题:C++ SockAddr::resolveAddr方法的具体用法?C++ SockAddr::resolveAddr怎么用?C++ SockAddr::resolveAddr使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在SockAddr的用法示例。


在下文中一共展示了SockAddr::resolveAddr方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: gethostname

//------------------------------------------------------------------------------
utf8::String SockAddr::gethostname(bool noThrow,const utf8::String & def)
{
  SockAddr addr;
  int32_t err = 0;
  utf8::String s;
  APIAutoInitializer ksockAPIAutoInitializer;
#if defined(__WIN32__) || defined(__WIN64__)
  ksys::Array<IpInfo> addresses;
  getAdaptersAddresses(addresses);
  if( ksys::isWinXPorLater() || iphlpapi.GetAdaptersAddresses != NULL ){
    IP_ADAPTER_ADDRESSES * pAddress = &addresses[0].addresses_;
    while( pAddress != NULL ){
// exclude loopback interface
      if( pAddress->IfType == MIB_IF_TYPE_LOOPBACK ) continue;
      if( pAddress->PhysicalAddressLength == 0 ) continue;
      PIP_ADAPTER_UNICAST_ADDRESS unicast = pAddress->FirstUnicastAddress;
      while( unicast != NULL ){
#ifdef IP_ADAPTER_ADDRESS_PRIMARY
        if( unicast->Flags & (IP_ADAPTER_ADDRESS_DNS_ELIGIBLE | IP_ADAPTER_ADDRESS_PRIMARY) ){
#else
        if( unicast->Flags & IP_ADAPTER_ADDRESS_DNS_ELIGIBLE ){
#endif
          addr.clear();
            //ksys::reverseByteArray(
          memcpy(
            &addr.addr4_,
            unicast->Address.lpSockaddr,
            unicast->Address.iSockaddrLength
          );
            //addr.addr4_.sin_family = unicast->Address.lpSockaddr->sa_family;
          try {
            err = 0;
            s = addr.resolveAddr();
          }
          catch( ksys::ExceptionSP & e ){
            err = e->code() >= ksys::errorOffset ? e->code() - ksys::errorOffset : e->code();
          }
          if( err == 0 ) break;
        }
        unicast = unicast->Next;
      }
      if( err == 0 ) break;
      pAddress = pAddress->Next;
    }
  }
  else {
开发者ID:BackupTheBerlios,项目名称:macroscope-svn,代码行数:47,代码来源:address.cpp


注:本文中的SockAddr::resolveAddr方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。