هذا هو خادم ويب صغير مكتوب في C يدعم مجموعة فرعية من مواصفات HTTP 1.0. الخادم ؛
• يجب أن تكون قادرة على التعامل مع الطلبات المتزامنة
• تنفيذ أساليب HTTP GET و HEAD
• التعامل مع الطلبات غير الصالحة والرد عليها.
يجب أن تكون قادرًا على إثبات أن خادم الويب الخاص بك قادر على توصيل صفحتك الرئيسية إلى متصفح الويب. يجب عليك تطبيق الإصدار 1.0 من HTTP ، كما هو محدد في RFC 1945 ، حيث يتم إرسال طلبات HTTP منفصلة لكل مكون من صفحة الويب. سيتمكن الخادم من التعامل مع طلبات الخدمة المتعددة المتزامنة بالتوازي. هذا يعني أن خادم الويب متعدد الخيوط. في الموضوع الرئيسي ، يستمع الخادم إلى منفذ ثابت. عندما يتلقى طلب اتصال TCP ، يقوم بإعداد اتصال TCP من خلال منفذ آخر ويخدم الطلب في سلسلة رسائل منفصلة.
لتبسيط مهمة البرمجة هذه ، سنقوم بتطوير الرمز على مرحلتين. في المرحلة الأولى ، يمكنك كتابة خادم متعدد الخيوط يعرض ببساطة محتويات رسالة طلب HTTP التي يتلقاها. بعد تشغيل هذا البرنامج بشكل صحيح ، يمكنك إضافة الكود المطلوب لإنشاء استجابة مناسبة.
أثناء قيامك بتطوير الكود ، يمكنك اختبار الخادم الخاص بك من متصفح الويب ، مثل Chrome و Safari و Firefox Web Browser كتطبيق عميل HTTP. ولكن تذكر أنك لا تخدم من خلال المنفذ القياسي 80 ، لذلك تحتاج إلى تحديد رقم المنفذ داخل عنوان URL الذي تقدمه لمتصفحك. على سبيل المثال ، إذا كان اسم جهازك هو testhost.mydomain.com ، يستمع الخادم الخاص بك إلى المنفذ 6789 ، وتريد استرداد ملف index.html ، فيمكنك تحديد عنوان URL التالي داخل المتصفح: http: // testhost.mydomain.com:6789/index.html
إذا حذفت ": 6789" ، فسيفترض المتصفح المنفذ 80 الذي من المرجح أن يستمع إليه خادم.
عندما يواجه الخادم خطأ ، يرسل رسالة استجابة مع مصدر HTML المناسب بحيث يتم عرض معلومات الخطأ في نافذة المتصفح.
المتطلبات العامة:
• سيتم استخدام مكتبة POSIX (PTHREAD).
• يستغرق الخادم الكثير من الطلبات ولكن يمكنه إرجاع استجابة 10 طلبات فقط. يتم رفض أكثر من 10 طلبات. في هذه الحالة ، يقوم الخادم بإرجاع رسالة "خادم مشغول"
• قبول الخادم الطلبات التي ستكون ملفات HTML و JPEG. الأنواع الأخرى لن تقبل