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