你如何获得收到数据包的适配器的本地IP地址?
问题是,"接收器适配器的IP地址是多少?" 不是我们收到的发件人的地址
receive_from( ..., &senderAddr, ... );
Run Code Online (Sandbox Code Playgroud)
呼叫.
您可以枚举所有网络适配器,获取它们的 IP 地址,并将子网掩码覆盖的部分与发送者的地址进行比较。
喜欢:
IPAddress FindLocalIPAddressOfIncomingPacket( senderAddr )
{
foreach( adapter in EnumAllNetworkAdapters() )
{
adapterSubnet = adapter.subnetmask & adapter.ipaddress;
senderSubnet = adapter.subnetmask & senderAddr;
if( adapterSubnet == senderSubnet )
{
return adapter.ipaddress;
}
}
}
Run Code Online (Sandbox Code Playgroud)