الفصل 25: الشبكات
مقدمة
مكتبة شبكة توفر إمكانيات التواصل عبر الشبكة: HTTP، TCP، WebSocket، وHTTP/2.
عميل HTTP
sad
استورد طلب_هتتب من "شبكة"
استورد جسون من "جسون"
# طلب GET بسيط
غير_متزامن دالة جلب_مستخدمين()
متغير رد = انتظر طلب_هتتب.احصل("https://api.example.com/مستخدمين")
متغير بيانات = جسون.فك(رد.النص)
اطبع_سطر("عدد المستخدمين: " + طول(بيانات))
نهايةطلب POST ببيانات
sad
استورد طلب_هتتب من "شبكة"
استورد جسون من "جسون"
غير_متزامن دالة إضافة_مستخدم(اسم، بريد)
متغير جسم = جسون.ترميز({"اسم": اسم، "بريد": بريد})
متغير رد = انتظر طلب_هتتب.نشر(
"https://api.example.com/مستخدمين"،
جسم،
{"نوع_المحتوى": "application/json"}
)
اطبع_سطر("الحالة: " + رد.الحالة)
نهايةخادم TCP
sad
استورد خادم_TCP من "شبكة"
دالة خادم_صدى()
متغير خادم = جديد خادم_TCP("0.0.0.0"، 8080)
اطبع_سطر("الخادم يستمع على المنفذ 8080...")
بينما (صحيح)
متغير اتصال = خادم.اقبل()
متغير بيانات = اتصال.اقرأ()
اتصال.اكتب("صدى: " + بيانات)
اتصال.أغلق()
نهاية
نهايةWebSocket
sad
استورد خادم_WS من "شبكة"
متغير خادم = جديد خادم_WS(8081)، العملاء = []
خادم.عند_اتصال = دالة(عميل)
العملاء = العملاء + [عميل]
نهاية
خادم.عند_رسالة = دالة(عميل، رسالة)
# بث لجميع العملاء
لكل ع في العملاء
ع.ارسل("بث: " + رسالة)
نهاية
نهاية
خادم.ابدأ()جدول بروتوكولات الشبكة
| البروتوكول | الاستخدام | السرعة |
|---|---|---|
| HTTP | طلبات ويب | متوسط |
| TCP | نقل بيانات عام | سريع |
| WebSocket | اتصال ثنائي | فوري |
تمرين
اكتب برنامجاً يجلب أخبار الطقس لمدينة معينة من API عام ويعرضها بشكل منظم.