diff --git a/sdk_core/src/base/network_util.cpp b/sdk_core/src/base/network_util.cpp index c3a8f16..799b97d 100644 --- a/sdk_core/src/base/network_util.cpp +++ b/sdk_core/src/base/network_util.cpp @@ -99,21 +99,25 @@ bool FindLocalIP(const struct sockaddr_in &client_addr, uint32_t &local_ip) { IP_ADAPTER_INFO *pAdapter = reinterpret_cast(pAdapterInfo.get()); if (NO_ERROR == dlRetVal && pAdapter != NULL) { - while (GetAdapterState(pAdapter)) { - std::string str_ip = pAdapter->IpAddressList.IpAddress.String; - std::string str_mask = pAdapter->IpAddressList.IpMask.String; - ULONG host_ip = inet_addr(const_cast(str_ip.c_str())); - ULONG host_mask = inet_addr(const_cast(str_mask.c_str())); + while (pAdapter != NULL) { + if (GetAdapterState(pAdapter)) { + std::string str_ip = pAdapter->IpAddressList.IpAddress.String; + std::string str_mask = pAdapter->IpAddressList.IpMask.String; + ULONG host_ip = inet_addr(const_cast(str_ip.c_str())); + ULONG host_mask = inet_addr(const_cast(str_mask.c_str())); - if ((host_ip & host_mask) == - (client_addr.sin_addr.S_un.S_addr & host_mask)) { - local_ip = host_ip; - found = true; - break; + if ((host_ip & host_mask) == + (client_addr.sin_addr.S_un.S_addr & host_mask)) { + local_ip = host_ip; + found = true; + break; + } } + pAdapter = pAdapter->Next; } } + return found; } #else @@ -149,4 +153,4 @@ bool FindLocalIP(const struct sockaddr_in &client_addr, uint32_t &local_ip) { } #endif } // namespace util -} // namespace livox \ No newline at end of file +} // namespace livox