นี่คือเว็บเซิร์ฟเวอร์ขนาดเล็กที่เขียนใน C ที่รองรับชุดย่อยของข้อกำหนด HTTP 1.0 เซิร์ฟเวอร์;
•ควรจะสามารถจัดการคำขอพร้อมกันได้
•ใช้วิธีการ HTTP และหัว
•จัดการและตอบสนองต่อคำขอที่ไม่ถูกต้อง
คุณควรจะสามารถแสดงให้เห็นว่าเว็บเซิร์ฟเวอร์ของคุณมีความสามารถในการส่งโฮมเพจของคุณไปยังเว็บเบราว์เซอร์ คุณควรใช้ HTTP เวอร์ชัน 1.0 ตามที่กำหนดไว้ใน 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.htmlml
หากคุณละเว้น ": 6789" เบราว์เซอร์จะถือว่าพอร์ต 80 ซึ่งส่วนใหญ่จะไม่มีเซิร์ฟเวอร์ฟังอยู่
เมื่อเซิร์ฟเวอร์พบข้อผิดพลาดจะส่งข้อความตอบกลับด้วยแหล่ง HTML ที่เหมาะสมเพื่อให้ข้อมูลข้อผิดพลาดปรากฏในหน้าต่างเบราว์เซอร์
ข้อกำหนดทั่วไป:
•จะใช้ไลบรารี Posix (pthread)
•เซิร์ฟเวอร์ใช้คำขอมากเกินไป แต่สามารถส่งคืนการตอบกลับได้เพียง 10 คำขอ มีการปฏิเสธคำขอมากกว่า 10 คำขอ ในสถานะนี้เซิร์ฟเวอร์ส่งคืนข้อความ“ เซิร์ฟเวอร์ไม่ว่าง”
•เซิร์ฟเวอร์ยอมรับคำขอที่จะเป็นไฟล์ HTML และ JPEG ประเภทอื่นจะไม่ยอมรับ