Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 14 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
14
Dung lượng
172,92 KB
Nội dung
Trường Đại Học Bách Khoa Tp.HCM LẬPTRÌNH MINICHAT Bài giảng Khoa Khoa Học Và Kỹ Thuật Máy Tính Trang Trường Đại Học Bách Khoa Tp.HCM MiniChat: Chức Năng Chức – Cho phép nhiều user đăng ký vào nhóm để trò chuyện với Hình thức trò chuyện – – – Một user với user (1-1) Một user với nhóm user (1-n) Một user với tất user (1-n) Khoa Khoa Học Kỹ Thuật Máy Tính Trang Trường Đại Học Bách Khoa Tp.HCM MiniChat: Kiến Trúc (1) Mơ hình lựa chọn – Client/server Server – – Quản lý nhóm user nhóm Phân phối chuỗi thơng tin từ user đến user khác Client – – Giao tiếp với user Cho phép họ tạo nhóm, đăng ký tham gia vào nhóm; gởi/nhận thơng tin cho Khoa Khoa Học Kỹ Thuật Máy Tính Trang Trường Đại Học Bách Khoa Tp.HCM MiniChat: Kiến Trúc (2) •MiniChat •Server •MiniChat •MiniChat •MiniChat •Client •Client •Client Khoa Khoa Học Kỹ Thuật Máy Tính Trang Trường Đại Học Bách Khoa Tp.HCM MiniChat: Qui Trình (1) MiniChat server trạng thái sẵn sàng để chờ kết nối từ client Nếu user muốn chat, người user phải kết nối đến MiniChat server, sử dụng MiniChat client – Mặc định, vừa kết nối, user chưa tham gia vào nhóm Sau kết nối, user tham gia vào nhóm có sẵn để chat, tạo nhóm Sau tham gia vào nhóm đấy, user gửi mNu tin cho tất user nhóm đến user cụ thể Khoa Khoa Học Kỹ Thuật Máy Tính Trang Trường Đại Học Bách Khoa Tp.HCM MiniChat: Qui Trình (2) MiniChat server có danh sách kết nối đến từ user danh sách nhóm tồn Khi nhận yêu cầu kết nối từ user, server đưa kết nối (socket) vào danh sách Khi nhận yêu cầu tạo nhóm từ user, server tạo nhóm thêm user đưa yêu cầu tạo nhóm vào nhóm tạo, nhóm đưa vào danh sách Khi nhận yêu cầu chat từ user, server gửi mẫu tin đến tất user nhóm (hoặc user cụ thể) dùng kết nối có danh sách Khoa Khoa Học Kỹ Thuật Máy Tính Trang Trường Đại Học Baùch Khoa Tp.HCM MiniChat: Giao Thức Giao thức cở dùng cho hệ thống MiniChat – – – – – Lệnh GLIST Lệnh ULIST Lệnh LOGIN , Lệnh SEND Lệnh LOGOU Dạng reply cho tất request – – N N = 1: Thành công, N = 0: Thất bại Khoa Khoa Học Kỹ Thuật Máy Tính Trang Trường Đại Học Bách Khoa Tp.HCM MiniChat: Giao Diện (Ví dụ) Cửa sổ nhập thơng tin button “Connect” Cửa sổ nhập thông tin button “login” Khoa Khoa Học Kỹ Thuật Máy Tính Trang Trường Đại Học Bách Khoa Tp.HCM Kỹ Thuật Java Multithread class PrimeRun implements Runnable { long minPrime; PrimeRun ( long minPrime ) { this.minPrime = minPrime; } public void run() { // compute primes larger than minPrime } 10 } 11 PrimeRun p = new PrimeRun(143); new Thread(p).start(); 12 Khoa Khoa Học Kỹ Thuật Máy Tính Trang Trường Đại Học Bách Khoa Tp.HCM MiniChat Server Sử Dụng Java Khoa Khoa Học Kỹ Thuật Máy Tính Trang 10 Trường Đại Học Bách Khoa Tp.HCM MiniChat Server Sử Dụng Java //Constructor frame public MiniChatServerDlg() { … // Tao sersersocket lang nghe cho server try { serverSocket = new ServerSocket( SERVER_PORT, 100 ); DefaultListModel lmContent = (DefaultListModel)jlbContent.getModel(); lmContent.addElement("Server listening on port " + SERVER_PORT + " "); // tạo thread để chờ new ServerAcceptThread(this,serverSocket).start(); } // end try // handle exception creating server and connecting clients catch ( IOException ioException ) { ioException.printStackTrace(); } … } Khoa Khoa Học Kỹ Thuật Máy Tính Trang 11 Trường Đại Học Bách Khoa Tp.HCM MiniChat Server Sử Dụng Java public class ServerAcceptThread extends Thread { ServerSocket serverSocket; MiniChatServerDlg serverChat; public ServerAcceptThread(MiniChatServerDlg server, ServerSocket sock) { serverSocket = sock; serverChat = server; } public void run() { T_UserRec puser; try { // listen for clients constantly while (true) { // accept new client connection Socket clientSocket = serverSocket.accept(); puser = new T_UserRec(); puser.sock = clientSocket; puser.next = serverChat.m_sock_no_user; serverChat.m_sock_no_user = puser; Khoa Khoa Học Kỹ Thuật Máy Tính Trang 12 Trường Đại Học Bách Khoa Tp.HCM MiniChat Server Sử Dụng Java // create new ReceivingThread for receiving messages from client new ReceivingThread(serverChat, clientSocket).start(); // print connection information DefaultListModel lmContent = (DefaultListModel)serverChat.jlbContent.getModel(); lmContent.addElement("Connection received from: " + clientSocket.getInetAddress()); serverChat.SendMessage(clientSocket,"Request accepted"); } // end while } // handle exception creating server and connecting clients catch ( IOException ioException ) { ioException.printStackTrace(); } } } Khoa Khoa Học Kỹ Thuật Máy Tính Trang 13 Trường Đại Học Bách Khoa Tp.HCM TỔNG KẾT Những u cầu chương trình MiniChat Khung chương trình MiniChat Server sử dụng Java Khoa Khoa Học Kỹ Thuật Máy Tính Trang 14 ... Cho phép nhiều user đăng ký vào nhóm để trò chuyện với Hình thức trò chuyện – – – Một user với user (1-1) Một user với nhóm user (1-n) Một user với tất user (1-n) Khoa Khoa Học Kỹ Thuật Máy Tính... Trang 13 Trường Đại Học Bách Khoa Tp.HCM TỔNG KẾT Những yêu cầu chương trình MiniChat Khung chương trình MiniChat Server sử dụng Java Khoa Khoa Học Kỹ Thuật Máy Tính Trang 14 ... Học Bách Khoa Tp.HCM MiniChat Server Sử Dụng Java Khoa Khoa Học Kỹ Thuật Máy Tính Trang 10 Trường Đại Học Bách Khoa Tp.HCM MiniChat Server Sử Dụng Java //Constructor frame public MiniChatServerDlg()