Ứng dụng chat dựa trên mô hình client-server sử dụng UDP với giao diện window form

MỤC LỤC

Mô Hình Kết Nối Client - Server

Máy tính đóng vai trò là máy khách - Client: Với vai trò là máy khách, chúng sẽ không cung cấp tài nguyên đến các máy tính khác mà chỉ sử dụng tài nguyên được cung cấp từ máy chủ. Máy tính đóng vai trò là máy chủ - Server: Là máy tính có khả năng cung cấp tài nguyên và các dịch vụ đến các máy khách khác trong hệ thống mạng. Mô hình Client Server là mô hình mạng máy tính trong đó các máy tính con được đóng vai trò như một máy khách, chúng làm nhiệm vụ gửi yêu cầu đến các máy chủ.

Trong mô hình Client Server, server chấp nhận tất cả các yêu cầu hợp lệ từ mọi nơi khác nhau trên Internet, sau đó trả kết quả về máy tính đã gửi yêu cầu đó. Bởi vì Server - máy chủ luôn luôn trong trạng thái sẵn sàng để nhận request từ client nên chỉ cần client gửi yêu cầu tín hiệu và chấp nhận yêu cầu đó thì server sẽ trả kết quả về phía client trong thời gian ngắn nhất. Mô tả tệp chỉ là một số nguyên được liên kết với một tệp đang mở và nó có thể là kết nối mạng, tệp văn bản, thiết bị đầu cuối hoặc thứ gì khác.

Thụng qua giao diện này chỳng ta cú thể lập trỡnh ủiều khiển việc truyền thụng giữa hai máy sử dụng các giao thức mức thấp là TCP, UDP…. Socket là sự trừu tượng hoá ở mức cao, có thể tưởng tượng nó như là thiết bị truyền thông hai chiều gửi – nhận dữ liệu giữa hai máy tính với nhau. - Hai tiến trình liên lạc với nhau không kết nối trực tiếp - Thụng ủiệp gửi ủi phải kốm theo ủịa chỉ của người nhận - Thụng ủiệp cú thể gửi nhiều lần.

• Lưu trữ dữ liệu trong bộ nhớ: MemoryStream lưu trữ dữ liệu vào một mảng byte trong bộ nhớ, thay vì lưu vào một tệp vật lý như các luồng (streams) thông thường. Trong đề tài sử dụng Thread Listen: "Thread listen" trong ngữ cảnh lập trình thường đề cập đến việc sử dụng các luồng (threads) để lắng nghe (listen) và xử lý các kết nối từ các client trong mô hình lập trình mạng. UDP là một trong hai giao thức chính của Internet Protocol Suite (IP), cùng với TCP (Transmission Control Protocol).UDP là một giao thức gửi dữ liệu qua mạng mà không cần thiết lập kết nối trước (connectionless), không đảm bảo tính chắc chắn (unreliable) và không bảo đảm thứ tự dữ liệu (unordered).

Trong lập trình socket UDP, sử dụng thư viện socket tương ứng trong ngôn ngữ lập trình như socket trong Python, DatagramSocket trong Java, socket() trong C/C++. - Phương thức Receive để xử lý việc nhận dữ liệu từ client, ví dụ như hiển thị tin nhắn trên giao diện máy chủ, xử lý yêu cầu từ client, vv. - localEndPoint: Địa chỉ IP và cổng của client để nhận các tin nhắn từ server (IPAddress.Any để nhận từ bất kỳ IP nào, cổng 0 để hệ thống tự động chọn cổng).

- Gửi dữ liệu đến client: Nếu có yêu cầu từ client, máy chủ có thể gửi dữ liệu đến một client cụ thể thông qua địa chỉ IP và cổng của client đó. Triển khai phía máy khách (Client):. - Khởi tạo Socket: Tạo một đối tượng Socket để gửi và nhận dữ liệu. - Gửi dữ liệu đến máy chủ: Client sẽ gửi các gói tin dữ liệu chứa các tin nhắn tới máy chủ thông qua socket. - Nhận dữ liệu từ máy chủ: Client sẽ nhận các gói tin từ máy chủ và xử lý dữ liệu nhận được. - Hiển thị tin nhắn và tương tác với người dùng: Dữ liệu nhận được từ máy chủ sẽ được hiển thị trên giao diện người dùng của client và người dùng có thể nhập tin nhắn để gửi tới máy chủ. Ví dụ về giao tiếp bằng Console a), Sever.cs.

Hình 1.2.2: nguyên tắc hoạt động mô hình clients server
Hình 1.2.2: nguyên tắc hoạt động mô hình clients server

Xây dựng ứng dụng Server/Client

Bài toán

Mô hình thực hiện. Mô hình thực hiện. Phân tích thiết kế ứng dụng. Sơ đồ cấu trúc hệ thống. Sơ đồ cấu trúc hệ thống ứng dụng. Biểu đồ use-case. Biểu đồ use-case. Biểu đồ hoạt động. Biểu đồ hoạt động. Biểu đồ lớp. Biểu đồ lớp. Thiết kế giao diện. Giao diện Client. - Textbox: Cho phép người dùng tạo 1 gói tin với giao thức Udp. - ListView: Hiển thị dữ liệu từ Textbox khi người dùng gửi cho Server và nhận dữ liệu từ Server phản hồi lại. - Nút gửi: Khi ấn nút này thì dữ liệu từ Textbox sẽ được gửi cho máy chủ Server và ghi dữ liệu vào file Chatlog.txt. Giao diện Server b), Mô tả chi tiết giao diện Server. - ListView: Nhận dữ liệu từ Client gửi đến và hiển thị dữ liệu từ Textbox - Nút gửi: Khi ấn nút gửi dữ liệu ở ô Textbox sẽ được gửi đến Client và đồng.

Hình 2.1.1. Mô hình thực hiện
Hình 2.1.1. Mô hình thực hiện

Kết quả thực nghiệm chương trình

Yêu cầu cài đặt ứng dụng

- Trình soạn thảo văn bản: Bạn có thể sử dụng bất kỳ trình soạn thảo văn bản nào như Notepad, Sublime Text, Visual Studio Code, v.v. Với việc cài đặt các phần mềm này, bạn sẽ có đủ công cụ để phát triển, biên dịch và chạy ứng dụng chat UDP trên Windows Form. Lưu ý, mặc dù ứng dụng có thể chạy trên các phiên bản Windows nói trên, nhưng nó được phát triển và kiểm thử với .NET Framework 4.7.2 hoặc phiên bản mới hơn.

Vì vậy, để đảm bảo ứng dụng hoạt động một cách ổn định, cần đảm bảo rằng cả hai máy tính (máy server và máy client) đều có cài đặt .NET Framework 4.7.2 hoặc phiên bản mới hơn. Ngoài ra, cả hai máy tính cũng cần được kết nối với cùng một mạng LAN hoặc internet để có thể gửi và nhận tin nhắn qua giao thức UDP. Vì vậy, đối với yêu cầu về hệ điều hành, ứng dụng chat UDP trên Windows Form có thể chạy trên các phiên bản Windows 7 trở lên, với điều kiện là đáp ứng được các yêu cầu về phần cứng và phần mềm khác.

Thiết kế và triển khai ứng dụng chat đơn giản: Nhóm đã thiết kế và triển khai một ứng dụng chat đơn giản cho phép giao tiếp giữa hai máy server và client. Ứng dụng cho phép người dùng gửi và nhận tin nhắn qua giao thức UDP Socket. Giao diện người dùng thân thiện: Nhóm đã thiết kế giao diện người dùng đơn giản và thân thiện để người dùng có thể dễ dàng nhập và hiển thị tin nhắn.

Giao diện có thể bao gồm các ô nhập tin nhắn, danh sách tin nhắn đã gửi và nhận, và các chức năng kết nối và ngắt kết nối. Xử lý gửi và nhận tin nhắn: Nhóm đã xử lý quá trình gửi và nhận tin nhắn giữa hai máy server và client bằng cách sử dụng giao thức UDP Socket. Khi người dùng gửi tin nhắn, ứng dụng sẽ gửi tin nhắn từ client đến server, và server sẽ hiển thị tin nhắn đó.

Tương tự, khi server gửi tin nhắn, client sẽ nhận và hiển thị tin nhắn đó. Đảm bảo tính toàn vẹn và độ tin cậy: Mặc dù giao thức UDP không đảm bảo tính toàn vẹn và độ tin cậy của dữ liệu, nhóm có thể đã thực hiện một số biện pháp để đảm bảo tính toàn vẹn và độ tin cậy như sử dụng các thuật toán checksum, xử lý tin nhắn trùng lặp hoặc mất mát, hoặc sắp xếp gói tin theo thứ tự. Kiểm thử và sửa lỗi: Nhóm đã tiến hành kiểm thử và sửa lỗi để đảm bảo ứng dụng chat hoạt động một cách ổn định và đáng tin cậy.

Điều này bao gồm việc xác định và khắc phục các lỗi liên quan đến kết nối, truyền tải dữ liệu và hiển thị tin nhắn. Tài liệu và báo cáo: Nhóm có thể đã tạo tài liệu hướng dẫn sử dụng ứng dụng chat và viết báo cáo về quá trình thiết kế, triển khai và kiểm thử của ứng dụng.