Опубликовать сообщение с помощью PublisherSocket в C # UWP не получено в Python

Вы можете объявить метод throw исключение, если вы не можете (или это не удобно) обрабатывать исключение внутри метода.

В вашем случае вы вызывают метод setRadius внутри конструктора. Если вы считаете, что удобно обрабатывать исключение (которое выбрано setRadius) внутри конструктора, вы можете использовать предложение try-catch:

public CircleWithException(double newRadius) throws InvalidRadiusException {
    try {
        setRadius(newRadius);
        numberOfObjects++;
    } catch (InvalidRadiusException e) {
        setRadius(0); // for example
    }
}

Блок catch содержит то, что вы хотите сделать, если было выбрано исключение. В этом случае я устанавливаю радиус в 0, но вы можете это изменить.

Помните, что это зависит от реализации ваших классов и от того, как вы хотите, чтобы они работали. Если вы не хотите, чтобы конструктор обрабатывал это исключение, вы можете бросить его (как вы уже делаете) и обрабатывать его другими методами.

1
задан Izik 20 February 2019 в 17:22
поделиться

1 ответ

Это нормальное поведение. Вы используете петлевой IP-адрес для сетевых коммуникаций между приложением UWP и другим процессом (другим приложением UWP или настольным приложением). Это ограничено изоляцией сети.

Вы можете запустить свой сервер и клиент на другом компьютере для тестирования. См. Документ Как включить обратную связь и устранить проблемы изоляции сети (приложения Windows Runtime) . Он объяснил этот сценарий:

Loopback разрешен только для целей разработки. Использование приложением среды выполнения Windows, установленным вне Visual Studio, не допускается. Кроме того, приложение среды выполнения Windows может использовать петлю IP-адреса только в качестве целевого адреса для запроса клиентской сети. Поэтому приложение времени выполнения Windows, которое использует DatagramSocket или StreamSocketListener для прослушивания IP-адреса обратной связи, не получает никаких входящих пакетов.

В вашем случае, если вы просто хотите проверить, может ли приложение UWP успешно отправить сообщение вашему подписчику Python. Вы можете запустить приложение UWP на другом компьютере. Я использовал ваш код для создания приложения UWP для отправки сообщения и создания консольного приложения в качестве подписчика, которое запускается на другом компьютере. Консольное приложение может получить сообщение.

Обратите внимание, что поскольку вашему приложению UWP требуется доступ к сети во время выполнения, вам необходимо включить возможности Netwrok (Internet(Client) Internet(Client & Server) Private Networks(Client & Server)) в файле Package.appxmanifest.

0
ответ дан Xavier Xie - MSFT 20 February 2019 в 17:22
поделиться
Другие вопросы по тегам:

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