TcpListener не работает в приложении UWP - PullRequest
0 голосов
/ 13 мая 2018

Я создаю очень простое приложение UWP клиент-сервер.У меня есть следующий код.

private void Button_Click(object sender, RoutedEventArgs e)
{
    TcpListener server;

    server = new TcpListener(IPAddress.Any, 8081);
    server.Start();

    while (!server.Pending())
    {
    }

    Console.WriteLine("Connected");
}

Этот код прекрасно работает в приложении форм Windows Classic.Однако Pending всегда "ложно" в моем приложении UWP.Отказывается видеть входящее соединение.Я на одном ноутбуке для клиента и сервера, и брандмауэр выключен.Опять же, это работает в моем приложении форм, так что это не среда.Я разрешил опции клиент / сервер в разделе возможностей, но все равно не повезло.

Используя netstat, я вижу, что порт 8081 прослушивает.

Есть идеи, что мне здесь не хватает?Спасибо.

1 Ответ

0 голосов
/ 14 мая 2018

Я на одном ноутбуке для клиента и сервера

Согласно вашему описанию, сервер и клиент находятся на одном устройстве.Согласно разделу примечания этого документа :

Вследствие изоляции сети Windows не разрешает устанавливать сокет-соединение (Sockets или WinSock) между двумя приложениями UWP, работающими на одном и том жемашина;будь то через локальный адрес обратной связи (127.0.0.0) или путем явного указания локального IP-адреса.Подробнее о механизмах, с помощью которых приложения UWP могут взаимодействовать друг с другом, см. В разделе Связь между приложениями.

Мы не можем установить сокетное соединение между двумя приложениями UWP, работающими на одной машине.Даже с освобождением от петель.Это как дизайн.

Подробнее см. Официальный образец .

...