Как запустить клиентские и серверные прослушиватели UDP на одной машине - PullRequest
0 голосов
/ 26 июня 2018

И клиент, и сервер отправляют и получают данные по заданному порту.В производстве они находятся на отдельных машинах и проблем нет.В процессе разработки было бы намного удобнее запускать их на одном компьютере и избегать необходимости развертывания, настройки и завершения сеанса удаленной отладки.

Я пробовал это

var uc = new UdpClient();
var ep = new IPEndPoint(address, port);
uc.ExclusiveAddressUse = false;
uc.Client.Bind(ep);

и это не barf , но я все еще не могу привязать несколько слушателей к одной и той же конечной точке.После того, как я обнаружил, что ExclusiveAddressUse по умолчанию имеет значение false, так что этот подход не дает ничего, кроме дополнительного кода.

Возможно ли это, и если да, то как?

1 Ответ

0 голосов
/ 26 июня 2018

Вы, очевидно, не можете использовать один и тот же порт на той же машине, просто используйте # if директиву для debug и соответственно измените свои порты

Следующее может помочь

Клиент

#if DEBUG
    uc client = new UdpClient(34534);
#else
    uc client = new UdpClient();
#endif

Конструктор UdpClient (Int32)

Инициализирует новый экземпляр класса UdpClient и связывает его спредоставленный номер локального порта.

Примечания

Этот конструктор создает базовый сокет и привязывает его к номеру порта, с которым вы собираетесь общаться, Используйте этот конструктор, если вас интересует только установка номера локального порта .Основной поставщик услуг назначит локальный IP-адрес.Если вы передадите 0 конструктору, основной поставщик услуг назначит номер порта.Если используется этот конструктор, для экземпляра UdpClient устанавливается семейство адресов IPv4, которое нельзя изменить или перезаписать с помощью вызова метода connect с целью IPv6.

Отказ от ответственности ,полностью не проверено, просто прочитайте документацию, возможно, неправильно :) 1033 *

...