Вопрос следующий — есть ли возможность в .NET определить, какой из сетевых интерфейсов локальной машины будет использован для связи с удаленной машиной с известным ip?
D>Вопрос следующий — есть ли возможность в .NET определить, какой из сетевых интерфейсов локальной машины будет использован для связи с удаленной машиной с известным ip?
Вопрос не совсем понятен. У вас несколько активных интерфейсов?
Здравствуйте, Светлояр, Вы писали:
D>>Вопрос следующий — есть ли возможность в .NET определить, какой из сетевых интерфейсов локальной машины будет использован для связи с удаленной машиной с известным ip?
С>Вопрос не совсем понятен. У вас несколько активных интерфейсов?
С>Ответ в общих чертах: WMI или WinAPI.
Помойму имеется ввиду что есть две сетевухи со связью до нужного компа и надо выбрать конкретную.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Какой сетевой интерфейс будет использован?
От:
Аноним
Дата:
27.12.06 23:18
Оценка:
Есть два пути — либо самому проити по таблице маршрутов, либо вызвать коннект на сокете и по завершении спросить getsockname().
Здравствуйте, Светлояр, Вы писали:
С>Вопрос не совсем понятен. У вас несколько активных интерфейсов?
Именно. Четыре активных.
С>Ответ в общих чертах: WMI или WinAPI.
В WinAPI ничего подходящего не нашел. Правда знакомый сисадмин посоветовал трюк с побитовым наложением маски интерфейса на ip машины, к которой пойдет пакет. Теоретически результат должен совпасть только с таким же наложением на один из активных интерфейсов.
Здравствуйте, dep1974, Вы писали:
D>Вопрос следующий — есть ли возможность в .NET определить, какой из сетевых интерфейсов локальной машины будет использован для связи с удаленной машиной с известным ip?
а в чем собственно вопрос? При создании сокета указывается маска по которой определяется какие интерфейсы разрешается использовать...
D>>Вопрос следующий — есть ли возможность в .NET определить, какой из сетевых интерфейсов локальной машины будет использован для связи с удаленной машиной с известным ip?
M_>а в чем собственно вопрос? При создании сокета указывается маска по которой определяется какие интерфейсы разрешается использовать...
например:
listener = new TcpListener(listenIP, port);
здесь listenIP — это маска которая определяет какие сетевые интерфейсы разрешается использовать для прослушивания порта, можно просто указать конкретный IP адрес нужного интерфейса...
Здравствуйте, dep1974, Вы писали:
D>Вопрос следующий — есть ли возможность в .NET определить, какой из сетевых интерфейсов локальной машины будет использован для связи с удаленной машиной с известным ip?
Я бы предложил такой способ:
TcpClient client = new TcpClient(HostAddress, HostPort);
string remoteIP = ((IPEndPoint)client.Client.LocalEndPoint).Address.ToString();
При соединении с HostAddress система сама определит по какому интерфейсу связываться и Client.LocalEndPoint вернет ip нужного интерфейса.
Какой сетевой интерфейс будет использован?
От:
Аноним
Дата:
27.12.06 13:48
Оценка:
еле дошло
Скажите, а вне .NET, в винде, это можно как то сделать?