مرجع تخصصی زبان Csharp
جستجو

کار با شبکه وای فای در سی شارپ

در این پست سعی داریم تا بتوانیم با استفاده از یک Native شبکه های وای فای wifi پیرامون دستگاه را شناسایی کنیم و میزان قدرت سیگنال هر کدام را نیز نمایش دهیم.


یکی از مباحث لذت بخش حوزه شبکه، کار با وای فای (WIFI) در برنامه نویسی به زبان سی شارپ (Csharp) است،  در این پست قصد داریم تا یک آموزش ساده در این خصوص را آموزش دهیم.

خوب برای شروع، می بایست ابتدا از Nudget کتابخانه  ManagedNativeWifi را نصب کنیم، بعد از نصب این کتابخانه با آن تعامل می کنیم تا بتوانیم شبکه های اطراف خود را لیست کنیم، SSID هارا پیدا کنیم، وضعیت رمزنگاری را بررسی کنیم، و میزان قدرت سیگنال را ارزیابی کنیم.

در این پروژه از کدهای ساده برنامه نویسی استفاده شده تا معنی و مفهوم اصلی آموزش درنظر گرفته بشود.

        async Task scan()
        {
            dataGridView1.Rows.Clear();
            var scanResult = await NativeWifi.ScanNetworksAsync(TimeSpan.FromSeconds(5));
            var networks = NativeWifi.EnumerateAvailableNetworks();
            foreach (var network in networks)
            {
                dataGridView1.Rows.Add(network.Ssid, network.ProfileName, network.IsSecurityEnabled,
                    network.IsConnectable, network.SignalQuality);
            }
        }

در این کد یک تابع از نوع Task ایجاد کردم تا بتوانم بدون بصورت یک تست آن را اجرا کنم، اطلاعات را قرار است در یک datagridview1 نمایش داده بشود، لذا نیاز است پس از هربار اجرای کد ابتدا دیتاگریدویو را حذف کند.

سپس یک متغیر با عنوان ScanResult ایجاد کردم تا پس از 5 ثانیه اسکن اطراف، نتیجه را بررسی کند.

✅مدت زمان 5 ثانیه برای شناسایی دستگاه های اطراف عددی مناسب است، ولی اگر قصد دارید تا سیگنال های ضعیف تری را نیز بتواند شناسایی کند، نیاز است تا مدت زمان آن را بالا تر ببرید مثلا 10 تا 20 ثانیه.

✅اگر مدت زمان زیر 5 ثانیه تعریف بشود، ممکن است برخی دستگاه ها را نتواند شناسایی کند.

✅مدت زمان های بالاتر، باعث می شود تا پایان زمان تعیین شده هیچ دستگاه وایرلسی را نمایش ندهد.

در خط بعد، شبکه ها را به صورت enumerate شناسایی می کند (برای جلوگیری از هنگ کردن و استفاده از کش) و سپس درون یک متغیر با عنوان networks ذخیره سازی می کند.

سپس با استفاده از یک حلقه foreach اطلاعات بدست آمده را به صورت یک رکورد در دیتاگرید ویو نمایش دهد.

برای فراخوان کردن این تابع نیاز است تا آن را async کنیم:

        private async void button1_Click(object sender, EventArgs e)
        {
            await scan();
        }

تصویر فرم

تعداد صفحات: 2
💬 نظرات کاربران
💬ثبت نام کاربران
💬ورود کاربران