Saya perlu membangun server HTTP sederhana di C. Ada panduan? Tautan? Sampel?
Saya perlu membangun server HTTP sederhana di C. Ada panduan? Tautan? Sampel?
Jawaban:
Saya sarankan Anda melihat httpd kecil . Jika Anda ingin menulisnya dari awal, Anda pasti ingin membaca RFC 2616 secara menyeluruh . Gunakan soket BSD untuk mengakses jaringan pada tingkat yang sangat rendah.
tiny httpd
juga ada di github di sini: github.com/larryhe/tinyhttpd
Saya merekomendasikan Anda untuk melihat: Panduan Praktis untuk Menulis Klien dan Server
Apa yang harus Anda terapkan dalam langkah-langkah tambahan adalah:
Server HTTP secara konseptual sederhana:
Ini menjadi lebih sulit tergantung pada seberapa banyak HTTP yang ingin Anda dukung - POST sedikit lebih rumit, skrip, menangani banyak permintaan, dll.
Tapi dasarnya sangat sederhana.
Mongoose (Dulunya Simple HTTP Daemon) cukup bagus. Secara khusus, ini dapat disematkan dan dikompilasi di bawah Windows, Windows CE, dan UNIX.
Lihatlah nweb (Nigel's Web Server), "server web kecil dan aman [...] dengan hanya 200 baris kode sumber C":
https://drive.google.com/file/d/0B3msld7qnNOhN1NXaFIwSFU2Mjg/view?usp=sharing
http://www.ibm.com/developerworks/systems/library/es-nweb/
Artikel tersebut mencakup kodesemu, penjelasan, dan komentar.
EDIT: Tautan IBM telah mati. Saya telah menyimpan PDF halaman web ke Google Drive. Berikut adalah unduhan kodenya:
https://drive.google.com/file/d/0B3msld7qnNOhSGZGdDJJMmY0VHM/view?usp=sharing
@ ankushagarwal telah membuat beberapa perubahan dan mengupload versinya di GitHub: https://github.com/ankushagarwal/nweb
Saya telah menulis sendiri yang dapat Anda gunakan. Karya yang satu ini memiliki sqlite, thread safe dan dalam C ++ untuk UNIX.
Anda harus dapat memilihnya dan menggunakan kode yang kompatibel dengan C.
Saya sarankan melihat sumber ke sesuatu seperti lighthttpd .
http://www.manning.com/hethmon/ - "Illustrated Guide to HTTP oleh Paul S. Hethmon" dari Manning adalah buku yang sangat bagus untuk mempelajari protokol HTTP dan akan sangat berguna bagi seseorang yang mengimplementasikan / memperluasnya.
Ada duplikat dengan lebih banyak tanggapan .
Salah satu kandidat yang belum disebutkan adalah spserver .