ساخت برنامه چک کردن سرعت اینترنت با پایتون: پروژه‌ای خلاقانه و کاربردی

ساخت برنامه چک کردن سرعت اینترنت با پایتون: پروژه‌ای خلاقانه و کاربردی

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

پیش‌نیازها

قبل از شروع، مطمئن شوید که موارد زیر را در سیستم خود نصب دارید:

  • پایتون: نسخه 3.6 یا بالاتر
  • کتابخانه requests: برای ارسال درخواست‌های HTTP
  • کتابخانه time: برای اندازه‌گیری زمان

برای نصب کتابخانه requests، می‌توانید از دستور زیر در ترمینال یا خط فرمان استفاده کنید:

pip install requests

مراحل ساخت برنامه

1. انتخاب سرور تست

برای اندازه‌گیری سرعت اینترنت، به یک سرور تست نیاز داریم که بتوانیم فایل‌هایی را از آن دانلود کنیم و زمان دانلود را اندازه‌گیری کنیم. می‌توانید از سرورهای مختلفی استفاده کنید، اما برای سادگی، از یک فایل بزرگ و رایگان در یک سرور معتبر استفاده می‌کنیم. به عنوان مثال، می‌توانید از یک فایل ISO بزرگ از یک توزیع لینوکس استفاده کنید.

2. کد پایتون

کد پایتون زیر، هسته اصلی برنامه ما را تشکیل می‌دهد:

import requests
import time

def check_internet_speed(url, file_size_bytes):
    """
    سرعت اینترنت را با دانلود یک فایل از یک URL مشخص اندازه‌گیری می‌کند.

    Args:
        url (str): URL فایل برای دانلود.
        file_size_bytes (int): اندازه فایل به بایت.

    Returns:
        float: سرعت دانلود به مگابیت بر ثانیه (Mbps).
    """
    start_time = time.time()
    response = requests.get(url, stream=True)
    response.raise_for_status()  # بررسی خطاها

    downloaded_bytes = 0
    for chunk in response.iter_content(chunk_size=8192):
        if chunk:
            downloaded_bytes += len(chunk)

    end_time = time.time()
    download_time = end_time - start_time

    if downloaded_bytes != file_size_bytes:
        print("هشدار: اندازه فایل دانلود شده با اندازه فایل مورد انتظار مطابقت ندارد.")
        return None

    download_speed_bps = downloaded_bytes * 8 / download_time
    download_speed_mbps = download_speed_bps / (1024 * 1024)

    return download_speed_mbps

if __name__ == "__main__":
    test_url = "http://speedtest.tele2.net/100MB.zip" # یک فایل 100 مگابایتی
    file_size = 100 * 1024 * 1024  # 100 مگابایت به بایت

    speed = check_internet_speed(test_url, file_size)

    if speed:
        print(f"سرعت دانلود: {speed:.2f} مگابیت بر ثانیه")
    else:
        print("خطا در اندازه‌گیری سرعت اینترنت.")

3. توضیح کد

در این کد:

  • import requests: کتابخانه requests را برای ارسال درخواست‌های HTTP وارد می‌کنیم.
  • import time: کتابخانه time را برای اندازه‌گیری زمان وارد می‌کنیم.
  • check_internet_speed(url, file_size_bytes): این تابع، سرعت اینترنت را با دانلود یک فایل از URL مشخص اندازه‌گیری می‌کند.
  • start_time = time.time(): زمان شروع دانلود را ثبت می‌کنیم.
  • response = requests.get(url, stream=True): یک درخواست GET به URL مشخص ارسال می‌کنیم. پارامتر stream=True باعث می‌شود که فایل به صورت تکه تکه دانلود شود.
  • response.raise_for_status(): اگر در طول درخواست خطایی رخ دهد، این خط کد یک استثنا ایجاد می‌کند.
  • downloaded_bytes = 0: متغیری برای ذخیره تعداد بایت‌های دانلود شده.
  • for chunk in response.iter_content(chunk_size=8192): فایل را به صورت تکه‌های 8 کیلوبایتی دانلود می‌کنیم.
  • downloaded_bytes += len(chunk): تعداد بایت‌های دانلود شده را به متغیر downloaded_bytes اضافه می‌کنیم.
  • end_time = time.time(): زمان پایان دانلود را ثبت می‌کنیم.
  • download_time = end_time – start_time: زمان دانلود را محاسبه می‌کنیم.
  • download_speed_bps = downloaded_bytes * 8 / download_time: سرعت دانلود را به بیت بر ثانیه محاسبه می‌کنیم.
  • download_speed_mbps = download_speed_bps / (1024 * 1024): سرعت دانلود را به مگابیت بر ثانیه تبدیل می‌کنیم.
  • if __name__ == “__main__”: این بلوک کد فقط زمانی اجرا می‌شود که فایل به عنوان یک اسکریپت مستقل اجرا شود.
  • test_url: URL فایل برای دانلود.
  • file_size: اندازه فایل به بایت.
  • speed = check_internet_speed(test_url, file_size): تابع check_internet_speed را فراخوانی می‌کنیم.
  • print(f”سرعت دانلود: {speed:.2f} مگابیت بر ثانیه”): سرعت دانلود را چاپ می‌کنیم.

بهبود برنامه

می‌توانید برنامه را با افزودن ویژگی‌های زیر بهبود دهید:

  • انتخاب سرور: به کاربر اجازه دهید سرور تست را انتخاب کند.
  • تست پینگ: پینگ سرور را اندازه‌گیری کنید تا تاخیر شبکه را نیز نشان دهید.
  • رابط کاربری گرافیکی (GUI): یک رابط کاربری گرافیکی با استفاده از کتابخانه‌هایی مانند Tkinter یا PyQt ایجاد کنید.
  • ذخیره نتایج: نتایج تست را در یک فایل ذخیره کنید تا بتوانید سرعت اینترنت خود را در طول زمان ردیابی کنید.
  • نمایش گرافیکی: نتایج تست را به صورت گرافیکی نمایش دهید.

نکات مهم

  • انتخاب سرور مناسب: سروری را انتخاب کنید که به لحاظ جغرافیایی به شما نزدیک باشد تا نتایج دقیق‌تری به دست آورید.
  • اندازه فایل: از یک فایل با اندازه مناسب استفاده کنید. فایل‌های خیلی کوچک ممکن است نتایج دقیقی ارائه ندهند.
  • ترافیک شبکه: در هنگام تست، از اجرای برنامه‌هایی که از اینترنت استفاده می‌کنند خودداری کنید تا نتایج دقیق‌تری به دست آورید.
  • خطاها: کد را به گونه‌ای طراحی کنید که بتواند خطاهای احتمالی را به درستی مدیریت کند.

نتیجه‌گیری

در این مقاله، یک برنامه ساده اما کاربردی برای چک کردن سرعت اینترنت با استفاده از پایتون ساختیم. این پروژه یک تمرین عالی برای یادگیری پایتون و درک بهتر نحوه کار شبکه‌های کامپیوتری است. با افزودن ویژگی‌های بیشتر، می‌توانید این برنامه را به یک ابزار قدرتمند برای مدیریت و نظارت بر سرعت اینترنت خود تبدیل کنید.

بدون دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *