Я получаю сообщение от клиента через какой-то ограниченный API и получаю IP-адрес этого клиента.Мой сервер имеет 4 сетевые карты.
Я хочу ответить клиенту, что он может связаться со мной по TCP-соединению на одном из моих интерфейсов, но как узнать, какой именно?
Как я могу изменить эту функцию, чтобы она возвращалаIPv4-адрес нужной сетевой карты?Как я могу сравнить IPv4-адрес клиента с моими адресами таким образом, чтобы он всегда возвращал IP-адрес, с которым фактически может связаться другой конец?IP-адреса могут быть любыми значениями с разными масками и шлюзами.
Что должна содержать пустая функция?
public static string GetLocalIPAddressInRange(IPAddress testIP)
{
var host = Dns.GetHostEntry(Dns.GetHostName());
foreach (var ip in host.AddressList)
{
if (ip.AddressFamily == AddressFamily.InterNetwork)
{
if(IPIsOnSameNetwork(ip, testIP))
{
return ip.ToString();
}
}
}
throw new Exception("No network adapters with an IPv4 address in the network!");
}
public static bool IPIsOnSameNetwork(IPAddress local, IPAddress test)
{
}