سؤال

أنا بحاجة إلى بناء بسيط HTTP server في C.أي التوجيه ؟ الروابط ؟ العينات ؟

هل كانت مفيدة؟

المحلول

وأقترح عليك أن نلقي نظرة على صغيرة هتبد . إذا كنت تريد أن تكتب من الصفر، ثم عليك أن ترغب في تماما RFC 2616 . استخدام BSD مآخذ للوصول إلى الشبكة عند مستوى منخفض حقا.

نصائح أخرى

أنصح أن تأخذ نظرة على: دليل عملي على الكتابة العملاء والملقمات

ما عليك تنفيذ الخطوات الإضافية هي:

  1. الحصول على الخاص بك الأساسية TCP sockets layer تشغيل (الاستماع على منفذ/الموانئ قبول اتصالات العميل وإرسال/استقبال البيانات).
  2. تنفيذ مخزنة القارئ بحيث يمكنك قراءة طلبات سطر واحد (محدد بواسطة CRLF) في وقت واحد.
  3. قراءة السطر الأول جدا.تحليل الخروج الأسلوب طلب نسخة المسار.
  4. تنفيذ رأس تحليل ل "رأس:قيمة" بناء الجملة.لا ننسى تتكشف مطوية رؤوس.
  5. التحقق من طريقة الطلب ونوع المحتوى حجم المحتوى لتحديد كم/إذا كان الجسم سوف تكون قراءة.
  6. تنفيذ فك محتوى استنادا إلى نوع محتوى.
  7. إذا كنت تريد الذهاب إلى دعم HTTP 1.1 تنفيذ أشياء مثل "100 تواصل" ، المحافظة على الحياة, نقل المقسم.
  8. إضافة متانة/التدابير الأمنية مثل الكشف عن طلبات غير مكتملة ، مما يحد أقصى عدد من العملاء.
  9. يتقلص التفاف التعليمات البرمجية مفتوحة المصدر ذلك :)

ملقم HTTP نظريا بسيطة:

  • فتح بورت 80 على الاستماع
  • عندما يتم اتصال جمع المعلومات (على أساسا - يمكنك تجاهل بقية الآن)
  • ترجمة الطلب إلى ملف طلب
  • فتح الملف و يردده في العميل

فإنه يحصل على أكثر صعوبة اعتمادا على كم من HTTP كنت ترغب في دعم وظيفة هو قليلا أكثر تعقيدا, مخطوطات, التعامل مع طلبات متعددة ، إلخ.

ولكن القاعدة هو بسيط جدا.

النمس (سابقا بسيط HTTP الشيطان) هو جيد جدا. على وجه الخصوص، من ادراجها ويجمع تحت ويندوز، ويندوز CE، وUNIX.

فتح مقبس TCP على المنفذ 80, بدء الاستماع عن اتصالات جديدة ، وتنفيذ هذا.اعتمادا على الأغراض الخاصة بك ، يمكنك تجاهل كل شيء تقريبا.في أسهل ، يمكنك إرسال نفس الرد على كل طلب ، والتي تنطوي على مجرد كتابة النص إلى المقبس.

وانظروا n الويب (خادم ويب نايجل) "، وهو صغير، خادم الويب آمن [...] مع خطوط فقط 200 من التعليمات البرمجية المصدر C":

https://drive.google.com/file/d/ 0B3msld7qnNOhN1NXaFIwSFU2Mjg / الرأي؟ جامعة جنوب المحيط الهادئ = تقاسم <الإضراب> http://www.ibm.com/developerworks/systems/library / ES-n الويب /

وتتضمن المادة شبة الكود وتفسيرات وتعليقات.

وتحرير: قد مات صلة آي بي إم. لقد حفظ PDF من صفحات الويب في Google Drive. هنا هو رمز التنزيل:

https://drive.google.com/file/d/ 0B3msld7qnNOhSGZGdDJJMmY0VHM / الرأي؟ جامعة جنوب المحيط الهادئ = تقاسم

ankushagarwal جعلت بعض التغييرات وتحميلها روايته على جيثب: https://github.com/ankushagarwal/nweb

كنت قد كتبت بلدي التي يمكنك استخدامها.هذا واحد يعمل لديه سكليتي, هو موضوع آمنة في C++ for UNIX.

يجب أن تكون قادرا على اختيار وبصرف النظر واستخدام C متوافق مع التعليمات البرمجية.

http://code.google.com/p/mountain-cms/

HTTP المواصفات و <لأ href = "HTTPS: //addons.mozilla كافيه / EN-US / فايرفوكس / الملحق / 1843 "يختلط =" noreferrer "> الحرائق كانت مفيدة جدا بالنسبة لي عندما أتيحت لي للقيام بذلك نيابة <م> بلدي الواجبات المنزلية.

وحظا سعيدا مع يدكم. :)

وكنت أقترح النظر في المصدر إلى شيء من هذا القبيل lighthttpd .

http://www.manning.com/hethmon/ - "الدليل المصور ل HTTP بول S. Hethmon "من مانينغ هو كتاب جيد جدا لتعلم بروتوكول HTTP وسوف تكون مفيدة جدا لشخص تنفيذه / امتداده.

واستخدام منصة وظائف مأخذ محددة لتغليف بروتوكول HTTP، تماما مثل الرجال وراء أباتشي فعل .

وهناك مكررة مع أكثر الردود .

ومرشح واحد لم يذكر حتى الان هو spserver .

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top