تخطَّ إلى المحتوى

الشبكات والمقابس

يوفر كنوز دعماً للبرمجة الشبكية من خلال واجهة مقابس سهلة الاستخدام.

// إنشاء مقبس الخادم
دع متغير مقبس_خادم = أنشئ_مقبس();
// ربط المقبس بعنوان ومنفذ
اربط_مقبس(مقبس_خادم, "127.0.0.1", 8080);
// بدء الاستماع
استمع_مقبس(مقبس_خادم);
اطبع("الخادم يستمع على المنفذ 8080...");
// قبول الاتصالات
دع متغير مقبس_عميل = اقبل_اتصال(مقبس_خادم);
// استقبال البيانات
دع بيانات = استقبل_مقبس(مقبس_عميل);
اطبع("البيانات المستلمة:");
اطبع(بيانات);
// إرسال رد
أرسل_مقبس(مقبس_عميل, "مرحباً من الخادم!");
// إغلاق المقابس
أغلق_مقبس(مقبس_عميل);
أغلق_مقبس(مقبس_خادم);
// إنشاء مقبس العميل
دع متغير مقبس = أنشئ_مقبس();
// الاتصال بالخادم
اتصل_مقبس(مقبس, "127.0.0.1", 8080);
// إرسال رسالة
أرسل_مقبس(مقبس, "مرحباً من العميل!");
// استقبال الرد
دع رد = استقبل_مقبس(مقبس);
اطبع("الرد:");
اطبع(رد);
// إغلاق المقبس
أغلق_مقبس(مقبس);
الدالةالوصف
أنشئ_مقبس()إنشاء مقبس جديد
اربط_مقبس(م, عنوان, منفذ)ربط المقبس بعنوان ومنفذ
استمع_مقبس(م)بدء الاستماع للاتصالات
اقبل_اتصال(م)قبول اتصال وارد
اتصل_مقبس(م, عنوان, منفذ)الاتصال بخادم
أرسل_مقبس(م, بيانات)إرسال بيانات
استقبل_مقبس(م)استقبال بيانات
أغلق_مقبس(م)إغلاق المقبس

خادم يعيد إرسال ما يستقبله:

دالة خادم_صدى(منفذ: صحيح) {
دع متغير مقبس_خادم = أنشئ_مقبس();
اربط_مقبس(مقبس_خادم, "0.0.0.0", منفذ);
استمع_مقبس(مقبس_خادم);
اطبع("خادم الصدى يعمل...");
كرر {
// قبول اتصال جديد
دع متغير عميل = اقبل_اتصال(مقبس_خادم);
// استقبال الرسالة
دع رسالة = استقبل_مقبس(عميل);
إذا طول(رسالة) > 0 {
اطبع("رسالة مستلمة:");
اطبع(رسالة);
// إعادة إرسال الرسالة
أرسل_مقبس(عميل, رسالة);
}
أغلق_مقبس(عميل);
}
}
دالة طلب_http(مضيف: نص, منفذ: صحيح, مسار: نص) -> نص {
دع متغير مقبس = أنشئ_مقبس();
اتصل_مقبس(مقبس, مضيف, منفذ);
// إنشاء طلب HTTP
دع طلب = "GET ";
// يمكن إضافة المسار والترويسات
أرسل_مقبس(مقبس, طلب);
دع رد = استقبل_مقبس(مقبس);
أغلق_مقبس(مقبس);
أرجع رد;
}

لخدمة عدة عملاء في نفس الوقت:

دالة خادم_متعدد(منفذ: صحيح) {
دع متغير مقبس_خادم = أنشئ_مقبس();
اربط_مقبس(مقبس_خادم, "0.0.0.0", منفذ);
استمع_مقبس(مقبس_خادم);
اطبع("الخادم متعدد الخيوط يعمل...");
كرر {
دع متغير مقبس_عميل = اقبل_اتصال(مقبس_خادم);
// معالجة كل عميل في خيط منفصل
أطلق || {
خدمة_عميل(مقبس_عميل);
};
}
}
دالة خدمة_عميل(مقبس: صحيح) {
دع بيانات = استقبل_مقبس(مقبس);
// معالجة البيانات
اطبع("معالجة طلب العميل...");
// إرسال الرد
أرسل_مقبس(مقبس, "تمت المعالجة بنجاح");
أغلق_مقبس(مقبس);
}
دالة اتصال_آمن(عنوان: نص, منفذ: صحيح) -> نتيجة<صحيح, نص> {
جرب {
دع متغير مقبس = أنشئ_مقبس();
اتصل_مقبس(مقبس, عنوان, منفذ);
أرجع موافق(مقبس);
} التقط خطأ {
أرجع فشل("فشل الاتصال");
}
}
// الاستخدام
طابق اتصال_آمن("127.0.0.1", 8080) {
موافق(م) => {
اطبع("تم الاتصال بنجاح");
// استخدام المقبس
أغلق_مقبس(م);
}
فشل(خ) => {
اطبع("خطأ:");
اطبع(خ);
}
}
// خادم دردشة بسيط
دالة خادم_دردشة() {
دع متغير مقبس = أنشئ_مقبس();
اربط_مقبس(مقبس, "0.0.0.0", 9000);
استمع_مقبس(مقبس);
اطبع("خادم الدردشة جاهز على المنفذ 9000");
// قائمة العملاء المتصلين
دع متغير عملاء: متجه<صحيح> = متجه[];
كرر {
دع متغير عميل = اقبل_اتصال(مقبس);
عملاء.ادفع(عميل);
اطبع("عميل جديد متصل");
// معالجة الرسائل في خيط منفصل
أطلق || {
معالجة_رسائل(عميل);
};
}
}
دالة معالجة_رسائل(مقبس_عميل: صحيح) {
كرر {
دع رسالة = استقبل_مقبس(مقبس_عميل);
إذا طول(رسالة) == 0 {
أوقف;
}
اطبع("رسالة:");
اطبع(رسالة);
// يمكن بث الرسالة لجميع العملاء
}
اطبع("عميل قطع الاتصال");
أغلق_مقبس(مقبس_عميل);
}
// عميل دردشة بسيط
دالة عميل_دردشة() {
دع متغير مقبس = أنشئ_مقبس();
اتصل_مقبس(مقبس, "127.0.0.1", 9000);
اطبع("متصل بخادم الدردشة");
// إرسال رسائل
أرسل_مقبس(مقبس, "مرحباً بالجميع!");
أرسل_مقبس(مقبس, "كيف حالكم؟");
// استقبال الردود في خيط منفصل
أطلق || {
كرر {
دع رد = استقبل_مقبس(مقبس);
إذا طول(رد) > 0 {
اطبع(رد);
}
}
};
// الانتظار قليلاً
نم(5000);
أغلق_مقبس(مقبس);
}