Skip to content

مكتبة network — الشبكات والمقابس

مكتبة الشبكات توفر واجهة برمجية شاملة للتعامل مع بروتوكولات الشبكة على مستوى المقابس (Sockets). تدعم TCP وUDP وWebSocket، مع إمكانية إنشاء خوادم وعملاء، ودعم كامل لـ IPv4 وIPv6.

sad
استورد شبكة من "stdlib/network"

# إنشاء مقبس TCP والاتصال بخادم
متغير مقبس = جديد شبكة.مقبس_tcp()
مقبس.اتصل("example.com"، 80)
مقبس.أرسل("GET / HTTP/1.1\r\nHost: example.com\r\n\r\n")
متغير الرد = مقبس.استقبل(4096)
اطبع_سطر(الرد)
مقبس.أغلق()

ملخص الوحدات

عنوان المقبس

الدالةالوصف
شبكة.عنوان(ip، منفذ)إنشاء عنوان مقبس IPv4
شبكة.عنوان_v6(ip، منفذ)إنشاء عنوان مقبس IPv6
عنوان.ip()عنوان IP
عنوان.منفذ()رقم المنفذ
عنوان.هو_v4()هل عنوان IPv4؟

مقبس TCP

الدالةالوصف
شبكة.مقبس_tcp()إنشاء مقبس TCP
مقبس.اربط(منفذ)ربط بمنفذ
مقبس.استمع(حد)الاستماع للاتصالات
مقبس.اقبل()قبول اتصال وارد
مقبس.اتصل(عنوان، منفذ)الاتصال بخادم
مقبس.أرسل(بيانات)إرسال بيانات
مقبس.استقبل(حجم)استقبال بيانات
مقبس.أغلق()إغلاق المقبس

مقبس UDP

الدالةالوصف
شبكة.مقبس_udp()إنشاء مقبس UDP
مقبس.أرسل_إلى(بيانات، عنوان، منفذ)إرسال بيانات إلى عنوان
مقبس.استقبل_من(حجم)استقبال بيانات مع معرفة المرسل
مقبس.انضم_مجموعة(عنوان)الانضمام لمجموعة بث متعدد

عنوان المقبس

شبكة.عنوان(ip، منفذ) — إنشاء عنوان

تُنشئ كائن عنوان مقبس يحتوي على عنوان IP ورقم المنفذ. يُستخدم لتحديد نقطة الاتصال بالشبكة. تدعم IPv4 وIPv6.

sad
استورد شبكة من "stdlib/network"

# إنشاء عنوان خادم محلي
متغير عنوان_الخادم = شبكة.عنوان("127.0.0.1"، 8080)
اطبع_سطر("IP: " + عنوان_الخادم.ip())
اطبع_سطر("المنفذ: " + لنص(عنوان_الخادم.منفذ()))
اطبع_سطر("IPv4: " + لنص(عنوان_الخادم.هو_v4()))

# عنوان IPv6
متغير عنوان6 = شبكة.عنوان_v6("::1"، 3000)
اطبع_سطر("IPv6: " + عنوان6.نص())

مقبس TCP

شبكة.مقبس_tcp() — إنشاء مقبس TCP

تُنشئ مقبس TCP جديد للاتصال الموثوق ثنائي الاتجاه. TCP يضمن وصول البيانات بالترتيب الصحيح وبدون فقدان.

الاتصال بخادم (عميل TCP)

sad
استورد شبكة من "stdlib/network"

# الاتصال بخادم API
متغير مقبس = جديد شبكة.مقبس_tcp()
مقبس.اتصل("api.example.com"، 80)

إذا (مقبس.متصل())
    اطبع_سطر("تم الاتصال بنجاح!")

    # إرسال طلب HTTP
    مقبس.أرسل("GET /data HTTP/1.1\r\nHost: api.example.com\r\n\r\n")

    # استقبال الرد
    متغير الرد = مقبس.استقبل(4096)
    اطبع_سطر("الرد: " + الرد)

    مقبس.أغلق()
وإلا
    اطبع_سطر("فشل الاتصال")
نهاية

إنشاء خادم TCP

sad
استورد شبكة من "stdlib/network"

# خادم TCP بسيط لتسجيل الحضور
متغير الخادم = جديد شبكة.مقبس_tcp()
الخادم.اربط(5000)
الخادم.استمع(10)
اطبع_سطر("الخادم يستمع على المنفذ 5000")

بينما (صحيح)
    # قبول اتصال جديد
    متغير العميل = الخادم.اقبل()
    متغير عنوان_العميل = العميل.عنوان_الطرف()

    اطبع_سطر("اتصال جديد من: " + عنوان_العميل.نص())

    # استقبال البيانات
    متغير البيانات = العميل.استقبل(1024)
    اطبع_سطر("استلم: " + البيانات)

    # إرسال رد
    العميل.أرسل("تم تسجيل حضورك بنجاح!")
    العميل.أغلق()
نهاية

إعدادات المقبس

sad
استورد شبكة من "stdlib/network"

متغير مقبس = جديد شبكة.مقبس_tcp()

# إعدادات الشبكة
مقبس.عيّن_مهلة_استقبال(5000)       # مهلة 5 ثوانٍ
مقبس.عيّن_مهلة_إرسال(5000)
مقبس.عيّن_إعادة_استخدام(صحيح)      # إعادة استخدام العنوان
مقبس.عيّن_keepalive(صحيح)           # الحفاظ على الاتصال
مقبس.عيّن_بلا_تأخير(صحيح)          # تعطيل خوارزمية Nagle

مقبس UDP

شبكة.مقبس_udp() — إنشاء مقبس UDP

تُنشئ مقبس UDP للاتصال السريع بدون اتصال مسبق. UDP أسرع من TCP لكن لا يضمن وصول البيانات أو ترتيبها. مناسب للتطبيقات التي تحتاج سرعة أكثر من موثوقية.

إرسال واستقبال رسائل UDP

sad
استورد شبكة من "stdlib/network"

# المرسل
متغير المرسل = جديد شبكة.مقبس_udp()
المرسل.أرسل_إلى("السلام عليكم"، "192.168.1.100"، 9000)
اطبع_سطر("تم إرسال الرسالة")
sad
استورد شبكة من "stdlib/network"

# المستقبل
متغير المستقبل = جديد شبكة.مقبس_udp()
المستقبل.اربط(9000)

متغير النتيجة = المستقبل.استقبل_من(1024)
اطبع_سطر("الرسالة: " + النتيجة.بيانات)
اطبع_سطر("من: " + النتيجة.عنوان + ":" + لنص(النتيجة.منفذ))

البث المتعدد (Multicast)

sad
استورد شبكة من "stdlib/network"

# الانضمام لمجموعة بث متعدد
متغير مقبس = جديد شبكة.مقبس_udp()
مقبس.اربط(5000)
مقبس.انضم_مجموعة("239.0.0.1")

اطبع_سطر("في انتظار رسائل البث المتعدد...")
بينما (صحيح)
    متغير رسالة = مقبس.استقبل_من(1024)
    اطبع_سطر("📡 " + رسالة.بيانات)
نهاية

مثال شامل

sad
استورد شبكة من "stdlib/network"

# نظام رسائل بسيط بين أجهزة الشبكة المحلية
اطبع_سطر("=== نظام التراسل الداخلي ===")

# إنشاء خادم للرسائل
متغير الخادم = جديد شبكة.مقبس_tcp()
الخادم.عيّن_إعادة_استخدام(صحيح)
الخادم.اربط(7000)
الخادم.استمع(5)

اطبع_سطر("خادم الرسائل يعمل على المنفذ 7000")
اطبع_سطر("في انتظار الاتصالات...")

بينما (صحيح)
    متغير العميل = الخادم.اقبل()
    متغير البيانات = العميل.استقبل(2048)

    إذا (البيانات != "")
        اطبع_سطر("📨 رسالة جديدة: " + البيانات)
        العميل.أرسل("✅ تم استلام رسالتك")
    نهاية

    العميل.أغلق()
نهاية

مُرخَّص بموجب رخصة MIT