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
  • Вопрос задан
  • 118 просмотров
Пригласить эксперта
Ответы на вопрос 1
@d-stream
Готовые решения - не подаю, но...
Зачем пытаться вывернуть сетвой стек мехом внутрь?

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

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

Войти через центр авторизации
Похожие вопросы