Proyek ini menggabungkan dua jalur yang selama ini berjalan sendiri-sendiri: networking dari Section Network Programming dan concurrency dari Section Concurrency dan Parallelism. Kita membangun server chat TCP yang berjalan di localhost — satu thread penerima per client, pesan disebarkan (broadcast) ke client lain, dan seluruh akses ke daftar koneksi dilindungi mutex. Kode server menggunakan POSIX socket API yang sudah kita pelajari, tanpa library eksternal sama sekali, sehingga setiap barisnya bisa kita jelaskan dan uji.
Empat bagian proyek mengikuti urutan pengerjaan nyata. Bagian 1 membangun kerangka server: socket, bind, listen, dan accept. Bagian 2 menghidupkan server dengan thread per client dan broadcast yang tersinkronisasi. Bagian 3 merapikan komunikasi menjadi protokol line-based dengan parser yang bisa diuji terpisah. Bagian 4 menutup dengan harness pengujian mandiri: unit test parser ditambah uji end-to-end yang menghubungkan dua client sungguhan dan memverifikasi setiap pesan sampai ke tujuannya. Seperti proyek lain di section ini, seluruh skenario dijalankan dalam satu proses sehingga hasilnya deterministik dan bisa diputar ulang.
Mulai proyek chat server: membuat socket TCP, mengikatnya ke loopback dengan port ephemeral, dan menyiapkan accept loop beserta struktur koneksi.
Buka → # Bagian 2: Melayanikan Client dengan ThreadHidupkan chat server: satu thread penerima per client, registri koneksi bersama yang dilindungi mutex, broadcast pesan, dan skenario dua client yang deterministik.
Buka → # Bagian 3: Protokol Line-BasedRapikan komunikasi chat menjadi protokol line-based: format PENGIRIM|ISI, parser yang menolak baris salah bentuk, perintah /quit, dan uji round-trip.
Buka → # Bagian 4: Menguji ServerTutup proyek dengan harness pengujian mandiri: unit test parser protokol dan uji end-to-end broadcast dua client, lengkap dengan ringkasan LULUS/GAGAL.
Buka →