Đồ án Thiết kế chương trình chat server

Form chính nhận số port do người dùng nhập vào. Sau khi nhấn nút Start, hàm startServer của class ChatServer sẽ khởi tạo thread serverThread, thread này sẽ mở ra 1 socket và listen ở cổng đã được chỉ định. Ngoài ra khi server chạy, sẽ có 2 thread khác được chạy là clientChecker và dataRouter. Khi có 1 client kết nối vào, serverThread sẽ mở ra 1 client thread, mỗi client thread sẽ chịu trách nhiệm gửi và nhận dữ liệu từ 1 client. Trong quá trình giao tiếp với client, client thread sẽ nắm giữ 1 kết nối, và phát sinh ra 1 thread khác chỉ có nhiệm vụ duy nhất là nhận và xử lý dữ liệu. Thread này là inProcessor. Như vậy, inProcessor sẽ luôn lắng nghe và nhận dữ liệu về, và thread client chỉ gửi dữ liệu đi. Các client được quản lý bằng dãy và dãy này là ClientList. Trong cấu hình server, chúng tôi để số client tối đa là 20, nếu muốn tăng số lượng, có thể điều chỉnh bằng cách thay đổi hằng MAX_CLIENT trong lớp ServerThread. Dữ liệu gửi tới được inProcessor xử lý, nếu có yêu cầu gửi message đến client khác, message sẽ được gửi đến thread dataRouter qua hàm bringTo(); Vì cấu trúc dùng để lưu giữ dãy client là cấu trúc array, mặt khác, trong quá trình sử dụng luôn có người dùng login, logout nên việc xóa dữ liệu về những client đã log out là cần thiết. Nếu không sẽ không đủ tài nguyên để cung cấp cho 1 lượng user lớn và quá trình chạy lâu dài. Thread clientChecker cứ mỗi 1s sẽ kiểm tra xem user nào đã logout và xóa dữ liệu về client đó trong ClientList, tức là dừng thread và xóa hẳn con trỏ trong dãy ClientList. Ngoài ra, để dễ dàng cho việc thể hiện các user đang online trên giao diện của server, class ChatServer có 1 danh sách ClientNameList chỉ dùng để lưu danh sách các người dùng đang online, và danh sách được cập nhật qua các hàm clientListAdd và clientListRemove. Mỗi khi có người dùng kết nối vào, hàm pushNewClientList của class ServerThread sẽ được gọi nhằm thông báo đến người dùng trên toàn hệ thống cập nhật danh sách người dùng mới.

TÀI LIỆU LUẬN VĂN CÙNG DANH MỤC

HỖ TRỢ TÌM VÀ TẢI TÀI LIỆU

  • Từ ngày 01/05/2022

    Luanvan365 sẽ có thêm dịch vụ hỗ trợ các bạn tìm kiếm các tài liệu, luận văn ở nhiều website khác nhau
    Bạn có thể liên hệ với Admin để được hỗ trợ nhé
  • THÔNG TIN LIÊN HỆ


    Phone: 0909.773687 (Zalo, Text) Facebook : Facebook chat hỗ trợ

  • XEM THÊM THÔNG TIN

    Xem thêm bài viết
LIÊN HỆ NGAY

TIN KHUYẾN MÃI

  • Thư viện tài liệu Phong Phú

    Hỗ trợ download nhiều Website

  • Nạp thẻ & Download nhanh

    Hỗ trợ nạp thẻ qua Momo & Zalo Pay

  • Nhận nhiều khuyến mãi

    Khi đăng ký & nạp thẻ ngay Hôm Nay

NẠP THẺ NGAY