У меня есть универсальное приложение Windows, которое должно действовать как TCP-сервер.
m_Listener = new StreamSocketListener();
m_Listener.ConnectionReceived += (s, e) => ProcessRequestAsync(e.Socket);
var bind = m_Listener.BindServiceNameAsync("8080").Wait();
Перед запуском приложения порт ни к чему не привязывается:
C:\Users\jsant>netstat -a | grep 8080
^C (Cancelled after some seconds because no reasults were found)
Затем, когда я запускаю приложение:
C:\Users\jsant>netstat -a | grep 8080
TCP 0.0.0.0:8080 Laptop:0 LISTENING
Итак, сокет прослушивает мой компьютер! Попытка как-то получить к нему доступ приводит к ошибке
C:\Users\jsant>telnet 127.0.0.1 8080
Connecting To 127.0.0.1...Could not open connection to the host, on port 8080: Connect failed
C:\Users\jsant>telnet 192.168.1.167 8080
Connecting To 192.168.1.167...Could not open connection to the host, on port 8080: Connect failed
C:\Users\jsant>telnet Laptop 8080
Connecting To Laptop...Could not open connection to the host, on port 8080: Connect failed
C:\Users\jsant>telnet localhost 8080
Connecting To localhost...Could not open connection to the host, on port 8080: Connect failed
Я активировал все возможности, чтобы устранить это как возможную причину.
Тот же код, запущенный в консольном приложении, работает нормально.
Кроме того, запуск примера MS из https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/DatagramSocket дал тот же результат. Внутри приложения сокет был виден, снаружи нет!
Есть ли какие-либо ограничения на запуск сервера в универсальном приложении Windows или я что-то упустил?
Спасибо!
Жоао
Изменить Думаю, я недостаточно ясно выразился. Моя проблема связана с доступом к TCP-серверу из внешнего приложения. Приложение может быть telnet, веб-браузером и т. д. Сервер находится внутри универсального приложения Windows.
Изменить №2
Последний час я потратил на изменение этого примера: https://ms-iot.github.io/content/en-US/win10/samples/BlinkyWebServer.htm и запустить его на своем Raspberry Pi 2. в состоянии получить доступ к веб-серверу с моего компьютера. Запустив то же приложение на моем компьютере, я не смог подключиться. Это действительно странно!
Редактировать №3. Я изменил свое приложение, оставив только возможности Интернета (клиент и сервер) и никаких объявлений. Запуск в Raspberry Pi работает безупречно, на моем локальном компьютере все еще не повезло (локальный или удаленный). И да, брандмауэр отключен :). Судя по комментариям Джареда, в которых он подтверждает ту же проблему со своим компьютером, мне кажется, что это ошибка. Я продолжу расследование.
Изменить #4 после того, как я узнал о команде «CheckNetIsolation», добавление возможности «PrivateNetworkClientServer» позволило мне получить доступ с внешнего устройства. Тем не менее, невозможно получить к нему доступ с локального компьютера (даже с добавленным правилом LoopbackExempt)