Tôi cần xây dựng một máy chủ HTTP đơn giản trong C. Có hướng dẫn nào không? Các liên kết? Mẫu?
Tôi cần xây dựng một máy chủ HTTP đơn giản trong C. Có hướng dẫn nào không? Các liên kết? Mẫu?
Câu trả lời:
Tôi khuyên bạn nên xem qua httpd nhỏ . Nếu bạn muốn viết nó từ đầu, thì bạn sẽ muốn đọc kỹ RFC 2616 . Sử dụng ổ cắm BSD để truy cập mạng ở mức thực sự thấp.
tiny httpd
cũng là trên github đây: github.com/larryhe/tinyhttpd
Tôi khuyên bạn nên xem qua: Hướng dẫn thực hành để viết máy khách và máy chủ
Những gì bạn phải triển khai theo các bước tăng dần là:
Máy chủ HTTP đơn giản về mặt khái niệm:
Nó trở nên khó khăn hơn tùy thuộc vào lượng HTTP bạn muốn hỗ trợ - POST phức tạp hơn một chút, các tập lệnh, xử lý nhiều yêu cầu, v.v.
Nhưng cơ sở là rất đơn giản.
Mongoose (Trước đây là Daemon đơn giản HTTP) khá tốt. Đặc biệt, nó có thể nhúng và biên dịch trong Windows, Windows CE và UNIX.
Nhìn vào nweb (Máy chủ web của Nigel), "một máy chủ web nhỏ, an toàn [...] chỉ với 200 dòng mã nguồn C":
https://drive.google.com/file/d/0B3msld7qnNOhN1NXaFIwSFU2Mjg/view?usp=sharing
http://www.ibm.com/developerworks/systems/library/es-nweb/
Bài báo bao gồm mã giả, giải thích và bình luận.
CHỈNH SỬA: Liên kết của IBM đã chết. Tôi đã lưu một bản PDF của trang web vào Google Drive. Đây là phần tải xuống mã:
https://drive.google.com/file/d/0B3msld7qnNOhSGZGdDJJMmY0VHM/view?usp=sharing
@ ankushagarwal đã thực hiện một vài thay đổi và tải lên phiên bản của anh ấy trên GitHub: https://github.com/ankushagarwal/nweb
Tôi đã viết của riêng tôi mà bạn có thể sử dụng. Cái này hoạt động có sqlite, là chuỗi an toàn và bằng C ++ cho UNIX.
Bạn có thể tách nó ra và sử dụng mã C tương thích.
Các đặc tả HTTP và Firebug là rất hữu ích cho tôi khi tôi đã phải làm điều đó cho tôi bài tập về nhà.
Chúc bạn may mắn. :)
Tôi khuyên bạn nên xem nguồn giống như lighthttpd .
http://www.manning.com/hethmon/ - "Hướng dẫn minh họa về HTTP của Paul S. Hethmon" từ Manning là một cuốn sách rất hay để học giao thức HTTP và sẽ rất hữu ích cho ai đó đang triển khai / mở rộng nó.
Có một bản sao với nhiều phản hồi hơn .
Một ứng cử viên chưa được đề cập là spserver .