В настоящее время я разрабатываю приложение, в котором мне нужно создать ссылку (читай: WiFi link ) между настольным приложением (в Windows 10) и планшетом (Android, но это не имеет значения).Рабочий процесс: Нажать кнопку -> повысить привилегии, если необходимо -> Создать размещенную в сети сеть WiFi * -> Разрешить устройству подключаться с предоставлением SSID /пароль / динамический IP-адрес ...
Ранее я использовал системный вызов netsh (запуск приложения с повышенными привилегиями) для создания размещенной сети.Теперь кажется, что все меньше и меньше возможно поступить таким образом (пример: на том же компьютере он работал на Win 7, но больше не работает на Win 10).Кажется, это проблема драйвера, потому что он все еще работает с внешней антенной USB, но не с внутренней антенной.В любом случае, я не хочу идти дальше с этим решением.
Моя цель : иметь возможность делать это программно с помощью API.Я видел много дискуссий о WiFi Direct против Hosted Network , и кажется, что Hosted Network - исчезающая технология, в то время как WiFi Direct имеет блестящее будущее ???Я не знаю.
Я нашел WiFi Direct API, но они выглядят Универсальные Windows ( UWP ), в то время как я хочу иметь возможностьиспользовать их в простом приложении C #. В этом посте показано, как взломать систему и использовать API в простом консольном приложении C #.Пока все хорошо, все работало.
Для простоты использования я использовал API в режиме Legacy , задав SSID и пароль таким образом, чтобы мой планшет мог их видеть.сеть.WiFiDirectAdvertisementPublisherAdvertisement.LegacySettings.IsEnabled = true;
Соединение очень быстрое и все хорошо.
Я терплю неудачу, когда использую стример (что-то вроде splashtop), и он отключается через 1-2 минуты (стример отключается, а не WiFi),Напротив, если я просто перейду к форме «Точка беспроводного доступа» в настройках Windows и активирую ее, связь будет продолжаться более 24 часов (и она все еще работает без сбоев).Таким образом, проблема не в стримере, ни в оборудовании / драйвере устройства WiFi.Моя первая идея заключается в том, что есть параметр WiFi Direct , который плохо настроен для поддержки потокового потока данных.
В связи с этим я не могу найти документ в Интернете.Документация Microsoft Wlanapi.dll так себе ... и я до сих пор не знаю, должен ли я сосредоточиться на WiFi Direct (правда?) Илипридерживайтесь Hosted Network , потому что он доказал, что он работает нормально?
Вот мой код, который отлично работает для поддержания соединения WiFi, но заставляет стример отключаться в ближайшее время:
using System;
using Windows.Devices.WiFiDirect;
using Windows.Security.Credentials;
namespace WFDcs_1
{
class Program
{
private WiFiDirectAdvertisementPublisher mPublisher = null;
private bool mConnected = false;
static void Main(string[] args)
{
Program zeProgram = new Program(args);
}
Program(string[] args)
{
StartAdvertisement(WiFiDirectAdvertisementListenStateDiscoverability.Normal);
Console.WriteLine("Hit a key to quit...");
Console.ReadKey();
}
void StopAdvertisement()
{
if (mConnected)
{
mPublisher.Stop();
mPublisher.StatusChanged -= OnStatusChanged;
}
}
void StartAdvertisement(WiFiDirectAdvertisementListenStateDiscoverability discoverability)
{
if ( mPublisher == null )
{
mPublisher = new WiFiDirectAdvertisementPublisher();
}
mPublisher.StatusChanged += OnStatusChanged;
mPublisher.Advertisement.IsAutonomousGroupOwnerEnabled = true;
mPublisher.Advertisement.LegacySettings.IsEnabled = true;
mPublisher.Advertisement.LegacySettings.Ssid = "MyGloriousSSID";
PasswordCredential lCred = new PasswordCredential();
lCred.Password = "test1234";
mPublisher.Advertisement.LegacySettings.Passphrase = lCred;
mPublisher.Advertisement.ListenStateDiscoverability = discoverability;
mPublisher.Start();
}
void OnStatusChanged(WiFiDirectAdvertisementPublisher sender, WiFiDirectAdvertisementPublisherStatusChangedEventArgs statusEventArgs)
{
// *** 1 ***
Console.WriteLine("OnStatusChanged(...): New connection status: {0}", statusEventArgs.Status.ToString());
}
}
}
Буду признателен за некоторые ссылки на учебные пособия, примеры, подсказки, все, что может мне помочь.Спасибо!