Получите SSID беспроводной сети, с которой я подключен с .NET C# на Windows Vista

  1. LocalStorage Плюсы: веб-хранилище можно рассматривать упрощенно как улучшение для файлов cookie, обеспечивая гораздо большую емкость. Если вы посмотрите на исходный код Mozilla, мы увидим, что 5120 КБ (5 МБ, равный 2,5 миллионам символов в Chrome) является размером хранилища по умолчанию для всего домена. Это дает вам значительно больше возможностей для работы, чем обычный cookie 4 Кбайт. Данные не отправляются обратно на сервер для каждого HTTP-запроса (HTML, изображения, JavaScript, CSS и т. Д.) - уменьшение количества трафика между клиентом и сервером. Данные, хранящиеся в localStorage, сохраняются до явного удаления. Сделанные изменения сохраняются и доступны для всех текущих и будущих посещений сайта. Минусы: он работает с политикой того же происхождения . Таким образом, сохраненные данные будут доступны только по одному и тому же происхождению.
  2. Cookies Плюсы: По сравнению с другими нет ничего AFAIK. Минусы: предел 4K предназначен для всего файла cookie, включая имя, значение, дату истечения срока годности и т. Д. Чтобы поддерживать большинство браузеров, держите имя менее 4000 байт и общий размер файлов cookie под 4093 байтами. Данные отправляются обратно на сервер для каждого HTTP-запроса (HTML, изображения, JavaScript, CSS и т. Д.) - увеличение количества трафика между клиентом и сервером. Как правило, допускается следующее: 300 куки-файлов в общей сложности 4096 байт на куки-файл. 20 куки-файлов на домен 81920 байт на домен (с учетом 20 файлов cookie максимального размера 4096 = 81920 байт.)
  3. sessionStorage Плюсы: Это похоже на localStorage. Данные не являются постоянными, т. Е. Данные доступны только для каждого окна (или вкладки в браузерах, таких как Chrome и Firefox). Данные доступны только во время сеанса страницы. Сделанные изменения сохраняются и доступны для текущей страницы, а также для будущих посещений сайта в том же окне. После закрытия окна хранилище удаляется. Минусы: данные доступны только внутри окна / вкладки, в котором она была установлена. Подобно localStorage, tt работает с политикой того же происхождения . Таким образом, сохраненные данные будут доступны только по одному и тому же происхождению.
24
задан mariosangiorgio 10 January 2009 в 22:40
поделиться

6 ответов

Я разрешил пользование библиотекой. Это закончилось, чтобы быть довольно легким работать с обеспеченными классами:

Первый я должен был создать объект WlanClient

wlan = new WlanClient();

, И затем я могу получить список SSIDs, с которым подключен ПК с этим кодом:

Collection<String> connectedSsids = new Collection<string>();

foreach (WlanClient.WlanInterface wlanInterface in wlan.Interfaces)
{
   Wlan.Dot11Ssid ssid = wlanInterface.CurrentConnection.wlanAssociationAttributes.dot11Ssid;
   connectedSsids.Add(new String(Encoding.ASCII.GetChars(ssid.SSID,0, (int)ssid.SSIDLength)));
}
24
ответ дан Suit Boy Apps 28 November 2019 в 23:55
поделиться

Мы использовали управляемую библиотеку Wi-Fi, но она выдает исключения, если сеть отключена во время запроса.

Попробуйте:

var process = new Process
{
    StartInfo =
    {
    FileName = "netsh.exe",
    Arguments = "wlan show interfaces",
    UseShellExecute = false,
    RedirectStandardOutput = true,
    CreateNoWindow = true
    }
};
process.Start();

var output = process.StandardOutput.ReadToEnd();
var line = output.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries).FirstOrDefault(l => l.Contains("SSID") && !l.Contains("BSSID"));
if (line == null)
{
    return string.Empty;
}
var ssid = line.Split(new[] { ":" }, StringSplitOptions.RemoveEmptyEntries)[1].TrimStart();
return ssid;
5
ответ дан Suit Boy Apps 28 November 2019 в 23:55
поделиться

Похоже, что это сделает то, что Вы хотите:

ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\WMI",
"SELECT * FROM MSNdis_80211_ServiceSetIdentifier");


foreach (ManagementObject queryObj in searcher.Get())
{
    Console.WriteLine("-----------------------------------");
    Console.WriteLine("MSNdis_80211_ServiceSetIdentifier instance");
    Console.WriteLine("-----------------------------------");

    if(queryObj["Ndis80211SsId"] == null)
        Console.WriteLine("Ndis80211SsId: {0}",queryObj["Ndis80211SsId"]);
    else
    {
        Byte[] arrNdis80211SsId = (Byte[])
        (queryObj["Ndis80211SsId"]);
        foreach (Byte arrValue in arrNdis80211SsId)
        {
            Console.WriteLine("Ndis80211SsId: {0}", arrValue);
        }
    }
}

от http://bytes.com/groups/net-c/657473-wmi-wifi-discovery

3
ответ дан ine 28 November 2019 в 23:55
поделиться
2
ответ дан Community 28 November 2019 в 23:55
поделиться

Вы оказываетесь перед необходимостью использовать собственный API WLAN. Существует долгая дискуссия об этом здесь . По-видимому, это - то, что использует Управляемый API Wi-Fi, таким образом, для Вас будет легче использовать его, если у Вас не будет ограничений для использования кода LGPL.

0
ответ дан Recep 28 November 2019 в 23:55
поделиться

(перекрестно разосланный в , Как получить в настоящее время соединенный Wi-Fi SSID в c# с помощью WMI или Системы. Сеть. Окна NetworkInformation 10? )

я нашел довольно старую библиотеку, относящуюся ко времени 2014:

Microsoft.WindowsAPICodePack-Core version 1.1.0.2

, Хотя это не соответствует Стандарту.NET, эта библиотека интегрирует с моим.NET Core 3,0 приложения, но очевидно не является межплатформенной.

Пример кода:

var networks = NetworkListManager.GetNetworks(NetworkConnectivityLevels.Connected);            
foreach (var network in networks) { 
    sConnected = ((network.IsConnected == true) ? " (connected)" : " (disconnected)");
    Console.WriteLine("Network : " + network.Name + " - Category : " + network.Category.ToString() + sConnected);
}
0
ответ дан 28 November 2019 в 23:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: