Я использую класс C# UdpClient
для UDP-сетей. Существует один объект UdpClient
, привязанный к фиксированному локальному порту, но не к какой-либо удаленной конечной точке, поскольку он должен иметь возможность отправлять/получать/с нескольких разных конечных точек.SocketException по неправильной теме
У меня есть два потока: один для отправки, один для приема. Теперь, когда я отправляю данные в конечную точку, которая существует, но не прослушивает этот порт, я ожидаю SocketException
. И я его получу. К сожалению, это не мой вызов Send
, который возвращает исключение, но вызов Receive
. Поэтому в отправляющем потоке я отправляю данные на «недействительную» конечную точку, и мой получающий поток получает исключение. К сожалению, в этот момент я, конечно, не знаю, какая конечная точка вызвала это исключение.
Хранение конечной точки перед отправкой, а доступ к ней в принимающем потоке - это просто ошибка состояния гонки, ожидающая своего появления.
К сожалению, SocketException
не дает мне конечной точки, которая вызвала ошибку.
Любые идеи? Как-то возможно сделать исключение брошенным на поток отправки?
справка приветствуется.
Я думаю, что это более или менее по дизайну из-за того, как работает UDP. Предполагая, что он может отправлять данные, то есть правильно инициализироваться.Я считаю это потому, что UDP не выполняет никаких проверок ошибок. Он просто отправляет и забывает. –
Я мог бы жить с этим, если бы он не убил мой вызов Receive(). Так или иначе, это кажется довольно нелогичным. –
Итак, читатель ближе к Документации, это может быть что-то другое. Можете ли вы опубликовать SocketException и SocketException.ErrorCode, чтобы лучше вам помочь. –