การใช้งานเซิร์ฟเวอร์ HTTP ที่ใช้ C ++ 11 ซึ่งสามารถเพิ่มอินสแตนซ์ CGI ได้อย่างง่ายดาย มันสามารถจัดการทรัพยากรคงที่รองรับการเชื่อมต่อยาว http และอื่น ๆ นอกจากนี้เรายังใช้บันทึกแบบอะซิงโครนัสเพื่อบันทึกสถานะของเซิร์ฟเวอร์
หน้าทดสอบ: ExampleCgi, LogincGi และ UploadCGI
a) เพื่อรวบรวมไฟล์ต้นฉบับลงในอุปกรณ์ไบนารี (ในโฟลเดอร์รูท)
bash install.shb) เรียกใช้โปรแกรม (ในโฟลเดอร์สร้าง)
cd build
./httpcgiservermainA) เขียนคลาสอินสแตนซ์ CGI ซึ่งสืบทอดคลาส Basecgi เช่น ExampleCgi
b) เพิ่มอินสแตนซ์ CGI ลงใน cgiinstanceFactory
c) เพิ่มไฟล์ส่วนหัวลงใน CGIHeader
d) แก้ไข cmakelists.txt
e) จากนั้นสร้างและเรียกใช้
ผลการทดสอบโดย Webbench จะแสดงในที่นี่
ดู ImplDoc.md สำหรับภาพรวมโดยย่อของการใช้งาน คำแนะนำเกี่ยวกับไฟล์ส่วนหัว:
อินเตอร์เฟส ฐาน/log.h สำหรับระบบบันทึกซึ่งมาจากบันทึกแบบอะซิงโครนัส
epoller.h ห่อหุ้มฟังก์ชั่นที่เกี่ยวข้องของ epoll
Netutil.h ห่อหุ้มฟังก์ชั่นที่เกี่ยวข้องของซ็อกเก็ต FD
simplebuffer.h แอปพลิเคชันเลเยอร์บัฟเฟอร์ (เราใช้รุ่น LT เท่านั้นตอนนี้)
channel.h encapsulate channel (เหตุการณ์) ฟังก์ชั่นการโทรกลับที่เกี่ยวข้อง (ฟังก์ชั่นอ่าน/เขียน/ข้อผิดพลาด)
Minheap.h ใช้ Min Heap เพื่อจัดการเวลาที่หมดอายุของการเชื่อมต่อ
EventLoop.h จัดการช่อง (เหตุการณ์) ซึ่งลงทะเบียนกับ epoller และประมวลผลช่องสัญญาณที่ใช้งานอยู่ (เหตุการณ์)
EventLoopThread.h จัดการคิวการเชื่อมต่อและซ็อกเก็ตการเชื่อมต่อการเชื่อมต่อแบบพุชแบบพุทหลักในคิวจากนั้นเธรดนี้จะเพิ่มซ็อกเก็ต FDS ลงใน eventloop
EventLoopThreadPool.h จัดการหลายเธรดหลักที่ยอมรับการเชื่อมต่อเธรดการเชื่อมต่อ FD ลงใน ThreadPool มันจะส่งซ็อกเก็ตไปยังเธรด
tcpserver.h ยอมรับการเชื่อมต่อซ็อกเก็ต FD และเมื่อเหตุการณ์อ่านมีความสุขกับซ็อกเก็ตการเชื่อมต่อจะอ่านสตรีมไบต์โดยอัตโนมัติลงในบัฟเฟอร์แอปพลิเคชันของช่องและดำเนินการฟังก์ชันการโทรกลับ เช่นเดียวกับเหตุการณ์การเขียนและข้อผิดพลาดเกิดขึ้น Happend
httpmessage.h แยกวิเคราะห์คำขอ http, สร้างข้อความตอบกลับ http ที่นี่เราใช้เครื่องรัฐเพื่อประมวลผลคำขอ HTTP
Basecgi.h คลาสนามธรรมของคลาสอินสแตนซ์ CGI มันมีอินเทอร์เฟซกระบวนการเราใช้เพื่อประมวลผลคำขอ CGI
IncludecgiHeader.h รวมคลาสอินสแตนซ์ CGI ซึ่งใช้สำหรับ CGIDISPATCH
CGIDISPATCH.H DISPATCHER CGI ซึ่งใช้ URL เพื่อค้นหาอินสแตนซ์ CGI เพื่อดำเนินการโปรแกรม CGI
httpcgiserver.h เมื่ออ่านเหตุการณ์ Happend มันจะวิเคราะห์คำขอ HTTP ในบัฟเฟอร์แอปพลิเคชันของช่องจากนั้นค้นหาอินสแตนซ์ CGI และประมวลผลคำขอ
httpcgiservermain.cpp เซิร์ฟเวอร์ HTTP Main
ExampleCgi/Examplecgi.h และ LogincGi/Logincgi.h ตัวอย่างของวิธีการเขียนคลาสอินสแตนซ์ CGI WebFile/เข้าสู่ระบบรวมไฟล์. html, .js, .css ที่ต้องการโดยคลาส LogincGi