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

  • Người chia sẻ :
  • Số trang : 12 trang
  • Lượt xem : 9
  • Lượt tải : 500

Các file đính kèm theo tài liệu này

  • Huong dan.doc
  • Application.rar
  • Source code.rar
  • Tất cả luận văn được sưu tầm từ nhiều nguồn, chúng tôi không chịu trách nhiệm bản quyền nếu bạn sử dụng vào mục đích thương mại

NHẬP MÃ XÁC NHẬN ĐỂ TẢI LUẬN VĂN NÀY

Nếu bạn thấy thông báo hết nhiệm vụ vui lòng tải lại trang

Bạn đang xem trước 20 trang tài liệu Đồ án Thiết kế chương trình chat server, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD LUẬN VĂN ở trên

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.