Ini adalah server web kecil yang ditulis dalam C yang mendukung subset dari spesifikasi HTTP 1.0. Server;
• Harus dapat menangani permintaan simultan
• Menerapkan metode HTTP Get and Head
• Menangani dan menanggapi permintaan yang tidak valid.
Anda harus dapat menunjukkan bahwa server web Anda mampu mengirimkan halaman beranda Anda ke browser web. Anda harus menerapkan versi 1.0 HTTP, sebagaimana didefinisikan dalam RFC 1945, di mana permintaan HTTP terpisah dikirim untuk setiap komponen halaman web. Server akan dapat menangani beberapa permintaan layanan simultan secara paralel. Ini berarti bahwa server web multi-threaded. Di utas utama, server mendengarkan port tetap. Ketika menerima permintaan koneksi TCP, ia mengatur koneksi TCP melalui port lain dan layanan permintaan di utas terpisah.
Untuk menyederhanakan tugas pemrograman ini, kami akan mengembangkan kode dalam dua tahap. Pada tahap pertama, Anda dapat menulis server multi-threaded yang hanya menampilkan konten pesan permintaan HTTP yang diterimanya. Setelah program ini berjalan dengan baik, Anda dapat menambahkan kode yang diperlukan untuk menghasilkan respons yang sesuai.
Saat Anda mengembangkan kode, Anda dapat menguji server Anda dari browser web, seperti Chrome, Safari, Browser Web Firefox sebagai aplikasi klien HTTP. Tetapi ingat bahwa Anda tidak melayani melalui port standar 80, jadi Anda perlu menentukan nomor port dalam URL yang Anda berikan kepada browser Anda. Misalnya, jika nama mesin Anda adalah testhost.mydomain.com server Anda mendengarkan port 6789, dan Anda ingin mengambil file index.html, maka Anda akan menentukan url berikut di dalam browser: http: // testhost.mydomain.com:6789/index.html
Jika Anda menghilangkan ": 6789", browser akan menganggap port 80 yang kemungkinan besar tidak akan memiliki server mendengarkan di atasnya.
Ketika server mengalami kesalahan, ia mengirim pesan respons dengan sumber HTML yang sesuai sehingga informasi kesalahan ditampilkan di jendela browser.
Ketentuan Umum:
• Perpustakaan POSIX (Pthread) akan digunakan.
• Server membutuhkan terlalu banyak permintaan tetapi hanya dapat mengembalikan respons 10 permintaan. Lebih dari 10 permintaan ditolak. Dalam keadaan ini, server mengembalikan pesan "Server is Busy"
• Server menerima permintaan yang akan menjadi file HTML dan JPEG. Tipe lainnya tidak akan menerima