CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
I. Phân tích yêu cầu và chức năng
1. Yêu cầu
Xây dựng một chương trình tương tác giữa máy khách (client) và máy chủ (server) trên hệ điều hành Linux bằng ngôn ngữ C
Máy khách kết nối với server qua số Port và Address IP
Máy chủ tiếp nhận yêu cầu từ máy khách và chấp nhận kết nối
Máy khách và máy chủ kết nối với nhau và có thể tương tác và truyền thông điệp cho nhau
2. Chức năng
Máy khách (client) kết nối với máy chủ và gửi yêu cầu
Máy chủ (server) kết nối được với máy khách và nhận được yêu cầu phản hồi
Máy khách và máy chủ gửi được các đoạn văn bản và file cho nhau II. Thiết kế kiến trúc
Mô hình Client/Server là mô hình tổ chức trao đổi thông tin trong đó mô tả cách mà các máy tính có thể giao tiếp với nhau theo một phương thức nhất định. Phương thức này là một chiến lược tổ chức phân cấp mà trong đó có một máy tính đặc biệt phục vụ các yêu cầu về lưu trữ, xử lý, tính toán tất cả các máy trên mạng. Kiểu tổ chức tổng quát của mô hình này là một mạng LAN được thiết lập từ nhiều máy tính khác nhau, trong đó một máy tính gọi là Server. Một chương trình client chạy từ bất kỳ máy tính nào trong mạng cũng có thể gởi yêu cầu của mình đến Server, khi server nhận được các yêu cầu này thì nó sẽ thực hiện và gởi kết quả về cho Client.
Hình 7: Mô hình làm việc của Client/Server
Với yêu cầu như trên, trước tiên nhóm tạo ra 1 địa chỉ mạng chung để các client truy cập trên cùng 1 cổng mạng Localhost. Các client này có thể kết nối với máy chủ (máy tính thông qua trình duyệt command), trao đổi được dữ liệu với máy chủ. Do đó, các client có thể trao đổi được dữ liệu thông qua máy chủ theo mô hình Client – Server. Dựa trên các mã nguồn, thư viện có sẵn, nhóm sẽ triển khai xây dựng hệ thống chat giữa các tag (User) này.
Kiến trúc của hệ thống gồm có 3 phần:
Máy chủ Server
Máy chủ được tạo ra và quản lý bởi máy tính. Máy chủ sẽ tạo liên kết với các máy khách. Các tương tác của người dùng đều được báo cáo về máy chủ thông qua trình duyệt command trên máy tính. Máy chủ tạo ra 1 localhost. Các máy khách muốn kết nối với nhau thông qua máy chủ phải truy cập vào localhost này.
Hình 8: Mô hình làm việc của Server/Client
Phía Server được khởi động trước trên hệ thống máy tính. Sau khi khởi động nó sẽ chờ Client liên hệ nó để yêu cầu một số dịch vụ. Quá trình của Server thành chia ra 2 kiểu:
Khi chỉ có một yêu cầu của Client được Server phục vụ tại một thời điểm thì gọi đó là Server lặp.
Khi Server có thể phục vụ đồng thời nhiều yêu cầu từ Client gởi đến gọi đó là Server đồng thời.
Máy khách Client
Người sử dụng sẽ tương tác trên chính Terminal để có thể thực hiện Chat. Mọi hoạt động đều được máy chủ quản lý. Các máy khách cùng phải truy cập vào cùng 1 localhost do máy chủ tạo ra để có thể cùng liên kết với máy chủ. Phía Client gởi một yêu cầu thông qua mạng đến Server để yêu cầu một số dạng dịch vụ nào đó như lấy tên máy Server,…
Hình 9: Mô hình gửi nhận dữ liệu
Hoạt động của Client&Server
Hình 10: Biểu đồ hoạt động giữa Client/Server
Máy chủ và máy khách giao tiếp với nhau thông qua cơ chế Socket TCP.
Nhóm em sử dụng thư viện Socket.io cùng với một số hàm đặc trưng trong thư viện này để thiết lập tương tác 2 chiều giữa máy chủ và máy khách. Với mỗi hành động như đăng nhập, nhắn tin, đăng xuất…( thực hiện trên terminal) thì đều được máy chủ lắng nghe và thực hiện các lệnh để đáp những thông điệp đó