Bài tập lớn môn: Các Hệ thống Phân tán (Distributed Systems) > Ứng dụng cho phép nhiều người dùng kết nối và cùng chỉnh sửa một văn bản trong thời gian thực.
Dự án này xây dựng một hệ thống mô phỏng tính năng cộng tác thời gian thực (tương tự như Google Docs đơn giản). Hệ thống giải quyết các bài toán cơ bản của lập trình phân tán bao gồm: truyền thông qua mạng, đồng bộ dữ liệu và xử lý đa luồng.
- Real-time Synchronization: Khi một người dùng gõ phím, nội dung được cập nhật ngay lập tức trên màn hình của người khác.
- Multi-Client Support: Hỗ trợ nhiều người dùng (Clients) kết nối đồng thời vào một máy chủ (Server).
- GUI Friendly: Giao diện đồ họa trực quan, dễ sử dụng (xây dựng bằng Tkinter).
Hệ thống hoạt động dựa trên mô hình Client-Server kết hợp với cơ chế Broadcasting.
| Thành phần | Công nghệ / Kỹ thuật | Mô tả |
|---|---|---|
| Giao thức | TCP Socket | Đảm bảo tính tin cậy và thứ tự của dữ liệu truyền tải. |
| Server | Python Multithreading | Tạo luồng riêng biệt cho mỗi kết nối Client để xử lý song song. |
| Consistency | Last-Writer-Wins | Giải quyết xung đột dữ liệu bằng cách ưu tiên cập nhật mới nhất. |
| Client | Tkinter & Threading | Xử lý giao diện và luồng nhận dữ liệu ngầm (Background Listener). |
- Python 3.x
- Git
Mở Terminal (hoặc CMD/PowerShell) và chạy lệnh:
git clone https://github.com/NguyenDuyKhuongKCNTT/collaborative-text-editing-system.git
cd collaborative-text-editing-system
3. Khởi chạy hệ thống
Bước 1: Chạy Server (Máy chủ) Server phải được bật trước để lắng nghe kết nối.
Bash
python server.py
✅ Màn hình sẽ báo: [*] Server đang chạy tại 127.0.0.1:65432
Bước 2: Chạy Client (Người dùng) Mở một cửa sổ Terminal mới (giữ nguyên cửa sổ Server) và chạy:
Bash
python client.py
Bước 3: Giả lập người dùng thứ 2 Mở thêm một cửa sổ Terminal khác và chạy lại lệnh client:
Bash
python client.py
🧪 Kịch bản kiểm thử (Demo)
Để kiểm tra tính năng đồng bộ:
Mở 2 cửa sổ Client và đặt chúng cạnh nhau.
Tại cửa sổ Client A: Gõ dòng chữ Hello Distributed System.
Quan sát Client B: Bạn sẽ thấy dòng chữ xuất hiện gần như tức thời.
Thử xóa hoặc sửa nội dung từ bất kỳ phía nào, bên còn lại sẽ được đồng bộ.
📂 Cấu trúc thư mục
collaborative-text-editing-system/
├── 📄 server.py # Mã nguồn Server (Socket, Multithreading, Broadcast)
├── 📄 client.py # Mã nguồn Client (GUI, Event Handling)
├── 📄 shared.txt # Nội dung văn bản cộng tác
└── 📄 README.md # Tài liệu hướng dẫn này
👨💻 Tác giả
Nguyễn Duy Khương, Hồ Viết Sơn Tùng, Phạm Công Trường --- Dự án phục vụ mục đích học tập và nghiên cứu môn Các Hệ thống Phân tán.