Ogoun
@Ogoun
Programmer

Как сделать запрос через конкретное сетевое устройство в .net?

На компьютере есть два активных сетевых устройства:
5ec9370511b6d191567859.jpeg
Одно через встроенную сетевую карту по проводу, второе - USB WiFi.

Для работы с сетью по умолчанию используется встроенная сетевая карта.
Но для части запросов из .net приложения хочу использовать wifi сеть.
Как это можно сделать?

Пробовал искать адрес сетевого интерфейса так:
NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
            foreach (NetworkInterface adapter in adapters)
            {
                if (adapter.Description.Contains("TP-LINK"))//TP-LINK
                {
                    IPInterfaceProperties properties = adapter.GetIPProperties();
                    foreach (var address in properties.UnicastAddresses)
                    {
                        if (address.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
                        {
                            Log.Info($"Use interface {adapter.Name}. IP: {address.Address}");
                            _useIp = true;
                            _address = address.Address;
                            break;
                        }
                    }
                }
                if (_useIp) break;
            }


И затем при создании запроса делать его явную вставку
private static IPEndPoint BindIP(ServicePoint servicePoint, IPEndPoint remoteEndPoint, int retryCount)
{
            if (retryCount > 3) return null;
            return new IPEndPoint(_address, 0);
 }

var request = WebRequest.CreateHttp(url);
            if (_useIp)
            {
                request.ServicePoint.BindIPEndPointDelegate = BindIP;
            }


Но такой подход не работает. Причем если пробую поставить адрес проводной сети, то вообще уходит в бесконечный цикл если не сделать как в примере выход при превышении количества попыток.

Запросы делаю по https. Может есть еще варианты?

PS: операционная система Windows 10
  • Вопрос задан
  • 141 просмотр
Пригласить эксперта
Ответы на вопрос 1
@d-stream
Готовые решения - не подаю, но...
Зачем пытаться вывернуть сетвой стек мехом внутрь?

Не проще ли просто задать штатными средствами маршруты?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы