ตระหนักถึงการสื่อสารด้วยข้อความแชทระหว่างสองโฮสต์ การสื่อสารดำเนินการในสภาพแวดล้อม IPv6 และฟังก์ชั่นการเข้าสู่ระบบและการลงทะเบียน การแชทแบบจุดต่อจุด การแชทกลุ่ม และฟังก์ชั่นอื่น ๆ ให้เสร็จสมบูรณ์
UDP เป็นโปรโตคอลแบบไร้การเชื่อมต่อ ต้นทางและเทอร์มินัลไม่ได้สร้างการเชื่อมต่อก่อนที่จะส่งข้อมูล เมื่อต้องการส่งข้อมูล ก็จะดึงข้อมูลจากแอปพลิเคชันและส่งไปยังเครือข่ายโดยเร็วที่สุด
วิธีการหลักที่ใช้ในระดับโปรโตคอลการสื่อสารคือ:
socket([family[, type[, proto]]])
bind(address: Union[_Address, bytes])
sendto(data, address,)
recvfrom(bufsize, flags,)
ในกระบวนการเขียนโปรแกรม ฐานข้อมูลจำเป็นสำหรับจัดเก็บชื่อผู้ใช้ รหัสผ่าน สถานะ ที่อยู่ IP ของผู้ใช้ และพอร์ต เมื่อเลือกฐานข้อมูล ฐานข้อมูลน้ำหนักเบา SQLite3 จะถูกนำมาใช้เพื่ออำนวยความสะดวกในการโยกย้ายฐานข้อมูล ฯลฯ
ชื่อฟังก์ชัน | การทำงาน |
---|---|
เริ่มต้น (ตนเอง) | ใช้เพื่อสร้างและเปิดฐานข้อมูล |
select_all(ตัวเอง) | ใช้เพื่อรับข้อมูลผู้ใช้ทั้งหมดในตารางฐานข้อมูลที่เกี่ยวข้อง |
ลงทะเบียน (ตนเอง, ชื่อผู้ใช้, รหัสผ่าน, IP, พอร์ต) | เรียกว่าระหว่างการลงทะเบียนเพื่อเพิ่มข้อมูลผู้ใช้ |
search_username(ตัวเอง, ชื่อผู้ใช้) | ค้นหาข้อมูลผู้ใช้ตามชื่อผู้ใช้ |
Login_success(ตนเอง, ชื่อผู้ใช้, IP, พอร์ต) | หลังจากเข้าสู่ระบบสำเร็จ ให้เปลี่ยนข้อมูลสถานะผู้ใช้ในฐานข้อมูล |
Login_check(ตนเอง, ชื่อผู้ใช้, รหัสผ่าน, IP, พอร์ต) | ใช้เพื่อตรวจสอบว่าชื่อผู้ใช้และรหัสผ่านถูกต้องเมื่อเข้าสู่ระบบ |
logout_success(ตัวเอง, ชื่อผู้ใช้) | เปลี่ยนสถานะของผู้ใช้เมื่อผู้ใช้ออกจากระบบ |
db_close(ตัวเอง) | ปิดฐานข้อมูล |
ป้อนไดเร็กทอรีที่มีโค้ดอยู่บนโฮสต์ทั้งสองที่สามารถสื่อสารได้ และดำเนินการ python3 Client.py
และ python3 Server.py
ตามลำดับ ไคลเอนต์สามารถเปิดเซิร์ฟเวอร์ได้หลายเครื่องตามความต้องการ แต่เซิร์ฟเวอร์สามารถเปิดได้เพียงเซิร์ฟเวอร์เดียวเท่านั้น เมื่อเริ่มต้นเซิร์ฟเวอร์ฐานข้อมูลจะถูกเปิดขึ้น
ทำการเลือกตามข้อความแจ้งเพื่อให้ได้ฟังก์ชันต่างๆ ในการแชทแบบเพียร์ทูเพียร์ ฝ่ายใดฝ่ายหนึ่งสามารถปิดแชทโดยการส่ง END และอีกฝ่ายสามารถยืนยันตามข้อความแจ้งได้ หลักการใช้งานการแชทเป็นกลุ่มคล้ายกัน และขั้นตอนการทดสอบก็คล้ายกัน