Использование Wifi Direct API в устаревшем режиме отключается каждые 2 минуты

У меня проблема с моим программным решением. Когда я подключаю клиента к точке доступа, соединение устанавливается, и все работает нормально. Но я заметил, что когда я устанавливаю пинг на хост, он теряет соединение каждые 2 минуты, а затем внезапно восстанавливает соединение. Это, к сожалению, неприемлемо для моего решения.

Я нашел эту ссылку: При использовании WiFi Direct Api в Windows? , который описывает ту же проблему, но ответ недостаточно ясен, и мне нужен пример кода или более подробное объяснение.

В своем решении я использую этот класс: https://docs.microsoft.com/en-us/uwp/api/windows.devices.wifidirect.wifidirectadvertisementpublisher?view=winrt-19041 с включенными устаревшими настройками: https://docs.microsoft.com/en-us/uwp/api/windows.devices.wifidirect.wifidirectlegacysettings.isenabled?view=winrt-19041

При использовании WiFi Direct API в Windows?


person Ryan    schedule 25.11.2020    source источник
comment
Ваша машина выключается? Обычно вы устанавливаете опцию KeepAive, которая периодически отправляет пустое сообщение на сервер, чтобы сервер не закрывал соединение. См. следующее: docs.microsoft.com/en-us/uwp/api/   -  person jdweng    schedule 25.11.2020
comment
Привет, спасибо за ваш ответ. Я не использую опцию KeepAlive. В моем решении я использую только класс WiFiDirectAdvertisementPublisher, связанный с моим вопросом. Нужно ли мне реализовывать код из Windows.Networking.Sockets? Я заметил это здесь: >docs.microsoft.com/en-us/uwp/api/ вы могли бы установить минимальное время только на 15 минут, но при этом соединение от устройства к точке доступа прерывалось бы уже 7 раз.   -  person Ryan    schedule 25.11.2020
comment
WifiDriect уже использует сокеты. Вопрос в том, как установить опцию. Я не уверен, что проблема прямо сейчас связана с установленным параметром энергосбережения, поэтому соединение закрывается при переходе в режим энергосбережения; или KeepAlive. Ссылка, которую вы нашли, является серверной частью KeepAlive, а не вашим клиентом. Предполагается, что KeepAlive не позволяет серверу закрывать соединение, когда данные не отправляются. Поэтому обычно сервер ждет 15 минут перед закрытием (но это время может быть меньше). Клиент для предотвращения закрытия сервера будет отправлять пустые сообщения, чтобы сервер не видел незанятый канал.   -  person jdweng    schedule 25.11.2020
comment
Может быть, глупый вопрос, но разве я не должен пинговать с обоих концов, чтобы сокет не переходил в режим энергосбережения? Кроме того, сценарий, который я написал, является серверным, клиент просто подключается, используя обычный интерфейс Windows Wi-Fi для подключения через ssid и psk. Так что у меня есть возможность изменять настройки Windows только на клиенте, где я также могу редактировать скрипт на сервере. Возможно, также важно отметить, что клиент не получает доступ в Интернет через сервер, точка доступа предназначена только для соединения между клиентом и сервером.   -  person Ryan    schedule 25.11.2020
comment
Я не проектирую эти машины!!!! Вы должны проверить параметры отключения питания машины, особенно ноутбуки. Производитель хочет рекламировать время автономной работы, и они сделают все, чтобы продлить срок службы. Предположим, у вас есть компьютер, подключенный к веб-сайту, который постоянно обновляется. Вы хотите, чтобы машина перешла в режим пониженного энергопотребления, когда вы уходите, и перестала использовать мышь и клавиатуру, даже если подключение к Интернету все еще пингуется?   -  person jdweng    schedule 25.11.2020