Как подключиться к сети Wi-Fi в .NET CF C # 3.5 - PullRequest
4 голосов
/ 27 февраля 2010

Вот что я хотел сделать в приложении .NET CF 3.5 (C #)

1) Проверьте, работает ли беспроводной адаптер / активен 2) Добавьте предпочитаемую сеть с доступным SSID, паролем и другими деталями. 3) Установите соединение с предпочтительной сетью

Я пытался использовать класс OpenNetCF.Net.NetworkInformation, но не повезло! Я не могу обнаружить беспроводные сети. Все сети, включая Wi-Fi и Bluetooth, отображаются как Ethernet.

foreach (var networkInterface in NetworkInterface.GetAllNetworkInterfaces())
{
    if (networkInterface is WirelessNetworkInterface)
        MessageBox.Show("Found a WirelessNetworkInterface");
    else if (networkInterface is WirelessZeroConfigNetworkInterface)
        MessageBox.Show("Found a WirelessZeroConfigNetworkInterface");
    else
        MessageBox.Show("Ethernet??");
}

Проблема, с которой я сталкиваюсь, обсуждается здесь http://community.opennetcf.com/forums/t/11099.aspx. Но нет решений.

Существуют ли API-интерфейсы .NET CF, которые позволяют мне взаимодействовать с Wifi?

Ответы [ 2 ]

3 голосов
/ 27 февраля 2010

Вы недоразумение. Это список, как следует из названия, все сетевые интерфейсы. Bluetooth и Wi-Fi (и даже RNDIS USB-соединения) являются сетевыми интерфейсами и поэтому будут перечислены. В сущности, это просто просит NDIS рассказать нам обо всех интерфейсах, о которых он знает.

Пока он повторяется, он делает две вещи. Во-первых, он спрашивает WZC, знает ли он об интерфейсе (то есть, зарегистрирован ли драйвер интерфейса в WZC). Если это так, то мы знаем, что это беспроводное устройство, совместимое с WZC, и мы получаем для него дополнительную информацию и возвращаем интерфейс WirelessZeroConfig.

Затем мы спрашиваем NDIS, является ли драйвер для устройства, заявившего о себе как о беспроводном. Если это так, мы получаем информацию NDIS для беспроводных сетей и возвращаем беспроводной интерфейс.

Все остальное становится общим NetworkInterface.

Итак, как беспроводное устройство может отображаться как универсальный сетевой интерфейс? Просто. Драйвер для него не был зарегистрирован в WZC, а также не сообщает, что он является беспроводным через NDIS. Наш код не может обнаружить то, что драйвер не сообщает. На самом деле это в некоторой степени характерно для старых плат Cisco, в которых для беспроводной связи используется фирменный интерфейс Cico. Они физически являются беспроводным устройством, но поскольку программное обеспечение не сообщает нам, что это так, и поскольку мы не запрашиваем никаких проприетарных API, все, что мы можем сделать, - это вернуть общую информацию NDIS для адаптера.

Если у вас есть такое устройство, единственный выход - поговорить с производителем адаптера и посмотреть, есть ли у него API для него, который вы можете использовать.

0 голосов
/ 21 апреля 2013

Вы можете использовать System.Net.NetworkInformation.NetworkInterface.NetworkInterfaceType = NetworkInterfaceType.Wireless80211, чтобы определить, является ли адаптер апдатером WiFi.

...