Привязка golang сокетов к определенному интерфейсу c глобально - PullRequest
0 голосов
/ 01 августа 2020

В последнее время я работал с приложением golang, которое выполняет ввод-вывод по сети с использованием множества протоколов - HTTP (TCP), DNS и WHOIS (UDP), а также некоторых других. Некоторые используют сторонние API

Приложение является открытым, поэтому я хотел бы внести изменения, позволяющие мне указывать сетевой интерфейс для сокетов для привязки, что позволяет мне использовать разные интерфейсы в зависимости от флаг времени выполнения. Единственный способ обойти это без написания кода - это изменять общесистемную таблицу маршрутизации каждый раз, когда я хочу использовать другой интерфейс, что не очень привлекательное решение. Например, где используется Dialer (или попытаться создать оболочку, которую они все могут использовать), есть ли функция golang, которая позволила бы настроить интерфейс глобально один раз, так что различные вызовы Dialer будут «просто работать» - и придерживаться указанного мной интерфейса?

Я немного поискал и нашел способы сделать это только при создании каждого Dialer (с использованием DialerContext.LocalAddr), но учитывая, что я действительно программист C не программист golang, я понимаю, что, возможно, мне совершенно не хватает идиомы golang для выполнения чего-то вроде этого

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...