Ruang obrolan HLW - alat obrolan multi-orang yang dikembangkan menggunakan teknologi pemrograman jaringan Linux C
Instalasi dan penerapan
git clone https://github.com/fujie-xiyou/chat_room.git
Kemudian impor chat_room.sql
ke database Anda, dan ubah informasi database di config.json
Terakhir, jika tidak ada kesalahan yang dilaporkan di ./chat_room_srv
, server akan berhasil dijalankan.
Kemudian ubah alamat server di config.json dan terakhir ./chat_room_cli
Silakan daftarkan akun terlebih dahulu
Video demo
Demo video ruang obrolan
Ikhtisar proyek
- Proyek ini adalah ruang obrolan antarmuka karakter yang dikembangkan menggunakan teknologi pemrograman jaringan Linux C. Fungsi dasarnya meliputi registrasi dan login pengguna, menambah teman, obrolan pribadi, membuat obrolan grup, mengundang teman untuk bergabung dalam obrolan grup, obrolan grup, melihat rekaman obrolan, dan. transfer file. tunggu.
Desain proyek
- Proyek ini dirancang berdasarkan model C/S dan dibagi menjadi dua bagian: klien dan server. Klien terhubung langsung ke server dan bertukar data dengan server di kedua arah dan meneruskannya ke pengguna target. , semua pekerjaan persistensi data juga selesai di sisi server.
- Kode proyek dirancang menggunakan ide berlapis. Klien terdiri dari lapisan antarmuka dan lapisan logika bisnis (lapisan permintaan), dan server terdiri dari lapisan logika bisnis dan lapisan persistensi.
- Desain basis data
- Ketika proyek ini dikembangkan, saya belum mempelajari mata kuliah terkait database secara sistematis, namun kemudian ketika saya meninjau desain database proyek ini, saya menemukan bahwa hal tersebut sejalan dengan paradigma BC.
- Beberapa contoh database proyek ditunjukkan pada gambar
- Desain fungsi transfer file Karena klien dan server proyek ini menggunakan JSON untuk interaksi data, diperlukan pemrosesan khusus untuk transfer file. Oleh karena itu, berikut adalah pengenalan singkat tentang metode pemrosesan transfer file.
- Seperti yang ditunjukkan pada gambar, setelah pengguna memasukkan nama file yang akan dikirim, sistem menggunakan panggilan sistem open() untuk membuka file, kemudian menggunakan panggilan sistem read() untuk membaca konten file dari byte yang ditentukan, dan mencatat nilai kembalian baca dalam bidang ukuran paket data, dan kemudian menggunakan base6 untuk membaca konten file 4. Transcode, catat hasilnya pada kolom data paket data, lalu kirimkan paket data tersebut ke penerima, lalu nilai apakah semua file telah terkirim berdasarkan besar kecilnya nilai kembalian baca nilainya lebih kecil dari parameter ukuran baca, Kemudian tutup file, jika tidak, lanjutkan membaca, transcoding, dan mengirim.
- Setelah menerima paket file, penerima mendekode data dalam data menjadi biner, kemudian menambahkan data dalam buff yang menyimpan hasil transcoding data ke file sesuai dengan nilai ukurannya.