相关文件
H:\webrtc-20210315\webrtc-20210315\webrtc\webrtc-checkout\src\rtc_base\network.h
Networkmanager类关系图

1、BasicNetworkManager
重要的成员变量和成员函数:
thread:知道当前是在哪个线程;
network_monitor: 监控网络变化
CreateNetworks:查找我们系统中都有哪些网络设备,并获取信息
QueryDefaultLocalAddress:用于获取本地绑定的socket,知道自己在使用哪个ip地址和端口
StartNetworkMonitor/StopNetworkMonitor:启动/停止网络监控器,被StartUpdating/StopUpdating调用。
2、NetworkManagerBase
重要的成员变量和成员函数:
networks: 遍历出的所有网卡信息
ipv4_any_address_network:默认ipv4网卡信息
ipv6any_address_network: 默认ipv6网卡信息
void MergeNetworkList(const NetworkList& list, bool* changed); 将可以合并的网卡信息进行合并;
3、NetworkManager
Initialize():初始化
StartUpdating/StopUpdating:启动/停止网络监控
DumpNetworks(): 将所有网卡信息输出到终端上去
4、其他
MdnsResponderProvider类,是webrtc的新功能,隐藏ip地址,防止ip地址泄漏。防止信令交换后,一旦对端获取到本端的公网ip后,可能会被不良分子攻击利用。
创建Networks过程
触发的时间点
BasicNetworkManager::StartUpdating

void BasicNetworkManager::StartUpdating() {thread_ = Thread::Current();// Redundant but necessary for thread annotations.RTC_DCHECK_RUN_ON(thread_);if (start_count_) {// If network interfaces are already discovered and signal is sent,// we should trigger network signal immediately for the new clients// to start allocating ports.if (sent_first_update_)thread_->Post(RTC_FROM_HERE, this, kSignalNetworksMessage);} else {thread_->Post(RTC_FROM_HERE, this, kUpdateNetworksMessage);StartNetworkMonitor();}++start_count_;}void BasicNetworkManager::StopUpdating() {RTC_DCHECK_RUN_ON(thread_);if (!start_count_)return;--start_count_;if (!start_count_) {thread_->Clear(this);sent_first_update_ = false;StopNetworkMonitor();}}

