ห้องสนทนา HLW - เครื่องมือสนทนาหลายคนที่พัฒนาขึ้นโดยใช้เทคโนโลยีการเขียนโปรแกรมเครือข่าย Linux C
การติดตั้งและการปรับใช้
git clone https://github.com/fujie-xiyou/chat_room.git
จากนั้นนำเข้า chat_room.sql
ลงในฐานข้อมูลของคุณ และแก้ไขข้อมูลฐานข้อมูลใน config.json
สุดท้ายนี้ หากไม่มีการรายงานข้อผิดพลาดใน ./chat_room_srv
chat_room_srv เซิร์ฟเวอร์จะเริ่มทำงานได้สำเร็จ
จากนั้นแก้ไขที่อยู่เซิร์ฟเวอร์ใน config.json และสุดท้าย ./chat_room_cli
กรุณาลงทะเบียนบัญชีก่อน
วิดีโอสาธิต
วิดีโอสาธิตห้องสนทนา
ภาพรวมโครงการ
- โปรเจ็กต์นี้เป็นห้องแชทอินเทอร์เฟซอักขระที่พัฒนาขึ้นโดยใช้เทคโนโลยีการเขียนโปรแกรมเครือข่าย Linux C ฟังก์ชั่นพื้นฐาน ได้แก่ การลงทะเบียนผู้ใช้และการเข้าสู่ระบบ การเพิ่มเพื่อน แชทส่วนตัว การสร้างแชทกลุ่ม การเชิญเพื่อนเข้าร่วมแชทกลุ่ม แชทกลุ่ม การดูบันทึกแชท และ โอนไฟล์.
การออกแบบโครงการ
- โปรเจ็กต์นี้ได้รับการออกแบบตามโมเดล C/S และแบ่งออกเป็นสองส่วน: ไคลเอนต์และเซิร์ฟเวอร์ ไคลเอนต์เชื่อมต่อโดยตรงกับเซิร์ฟเวอร์และแลกเปลี่ยนข้อมูลกับเซิร์ฟเวอร์ในทั้งสองทิศทาง เซิร์ฟเวอร์ถูกใช้เพื่อรับข้อความจากไคลเอนต์ และส่งต่อไปยังผู้ใช้เป้าหมาย งานการคงอยู่ของข้อมูลทั้งหมดก็เสร็จสมบูรณ์บนฝั่งเซิร์ฟเวอร์เช่นกัน
- รหัสโครงการได้รับการออกแบบโดยใช้แนวคิดแบบเลเยอร์ ไคลเอนต์ประกอบด้วยเลเยอร์อินเทอร์เฟซและเลเยอร์ตรรกะทางธุรกิจ (เลเยอร์คำขอ) และเซิร์ฟเวอร์ประกอบด้วยเลเยอร์ตรรกะทางธุรกิจและเลเยอร์การคงอยู่ โครงสร้างโค้ดมีดังนี้:
- การออกแบบฐานข้อมูล
- เมื่อโครงการนี้ได้รับการพัฒนา ข้าพเจ้าไม่ได้ศึกษาหลักสูตรที่เกี่ยวข้องกับฐานข้อมูลอย่างเป็นระบบ แต่ต่อมาเมื่อทบทวนการออกแบบฐานข้อมูลของโครงการนี้ พบว่าสอดคล้องกับกระบวนทัศน์ BC
- ตัวอย่างฐานข้อมูลโครงการบางส่วนแสดงไว้ในภาพ
- การออกแบบฟังก์ชันการถ่ายโอนไฟล์ เนื่องจากไคลเอนต์และเซิร์ฟเวอร์ของโปรเจ็กต์นี้ใช้ JSON สำหรับการโต้ตอบข้อมูล จึงจำเป็นต้องมีการประมวลผลพิเศษสำหรับการถ่ายโอนไฟล์ ดังนั้น ต่อไปนี้เป็นคำแนะนำโดยย่อเกี่ยวกับวิธีการประมวลผลของการถ่ายโอนไฟล์ อันดับแรก รูปภาพด้านบน:
- ดังแสดงในรูป หลังจากที่ผู้ใช้กรอกชื่อไฟล์ที่จะส่ง ระบบจะใช้การเรียกของระบบ open() เพื่อเปิดไฟล์ จากนั้นใช้การเรียกของระบบ read() เพื่ออ่านเนื้อหาไฟล์ของไบต์ที่ระบุ และ บันทึกค่าส่งคืนของการอ่านในขนาดของฟิลด์แพ็กเก็ตข้อมูล จากนั้นใช้ base6 เพื่ออ่านเนื้อหาไฟล์ 4. แปลงรหัสบันทึกผลลัพธ์ในช่องข้อมูลของแพ็กเก็ตข้อมูลจากนั้นส่งแพ็กเก็ตข้อมูลไปยังผู้รับแล้วตัดสินว่าไฟล์ทั้งหมดถูกส่งตามขนาดของค่าส่งคืนการอ่านหรือไม่ ค่าน้อยกว่าพารามิเตอร์ขนาดการอ่าน จากนั้นปิดไฟล์ ไม่เช่นนั้นจะอ่านต่อ แปลงรหัส และส่งต่อไป
- หลังจากได้รับแพ็คเกจไฟล์แล้ว ตัวรับจะถอดรหัสข้อมูลในข้อมูลเป็นไบนารี่ จากนั้นจึงผนวกข้อมูลในบัฟที่เก็บผลลัพธ์การแปลงรหัสของข้อมูลลงในไฟล์ตามค่าของขนาด