1 / 38

Lập trình ứng dụng MiniChat bằng Java dùng cơ chế xử lý Multithread

Lập trình ứng dụng MiniChat bằng Java dùng cơ chế xử lý Multithread. TS. Nguyễn Văn Hiệp, Nguyễn Quang Hùng E-mail: hungnq2@dit.hcmut.edu.vn Website: www.dit.hcmut.edu.vn/~hungnq/courses.htm. Mục tiêu. Sử dụng cơ chế Java multithread.

obelia
Download Presentation

Lập trình ứng dụng MiniChat bằng Java dùng cơ chế xử lý Multithread

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Lập trình ứng dụng MiniChat bằng Java dùng cơ chế xử lý Multithread TS. Nguyễn Văn Hiệp, Nguyễn Quang Hùng E-mail: hungnq2@dit.hcmut.edu.vn Website: www.dit.hcmut.edu.vn/~hungnq/courses.htm

  2. Mục tiêu • Sử dụng cơ chế Java multithread. • Bài tập ứng dụng MiniChat cho phép làm quen với qui trình xây dựng 1 chương trình theo giao diện “Dialog based” bằng JBuilder. Faculty of Information Technology, HCM University of Technology

  3. Mục lục • Giới thiệu c.trình MiniChat • Kỹ thuật lập trình Java Multi-thread • Xây dựng ứng dụng Minichat bằng JBuilder • Thiết kế giao diện cho MiniChat Client/Server • Thiết kế MiniChat server đáp ứng các kết nối đồng thời từ các client bằng cơ chế multithread Faculty of Information Technology, HCM University of Technology

  4. Giới thiệu về ctrình. MiniChat • Chức năng: cho phép nhiều user đăng ký vào các nhóm để trò chuyện với nhau. • Mô hình lựa chọn: client/server • Server: quản lý các nhóm và các user của từng nhóm, phân phối chuỗi thông tin từ một user đến các user khác. • Client: giao tiếp với các user; cho phép họ đăng ký nhóm; gởi/nhận thông tin cho nhau. • Định nghĩa giao thức dùng cho hệ thống MiniChat: • Lệnh GLIST <CRLF> • Lệnh ULIST <CRLF> • Lệnh LOGIN <tên group>,<tên user> <CRLF> • Lệnh SEND <string> <CRLF> • Lệnh LOGOU <CRLF> • Dạng reply cho tất cả các request: • N <chuỗi dữ liệu phụ kèm theo> • N = 1: Thành công, N = 0: Thất bại Faculty of Information Technology, HCM University of Technology

  5. Giao diện của ch.trình MiniChat client Cửa sổ nhập thông tin của button “Connect” Cửa sổ nhập thông tin của button “login” Faculty of Information Technology, HCM University of Technology

  6. Giao diện của MS. Visual C++ IDE Chạy Microsoft Visual C++từ Start  Programs  Microsoft Visual C++ Faculty of Information Technology, HCM University of Technology

  7. Kỹ thuật lập trình Java Multithread Tài liệu tham khảo: java.sun.com

  8. Kỹ thuật Java Multithread • Thread là một luồng thực thi trong một chương trình. Máy ảo JVM cho phép một ứng dụng có nhiều luồng thực thi đồng thời. • Có 2 cách dùng Java multithread (đa luồng): • Khai báo một lớp kế thừa từ lớp Thread và override method Thread.run(). • Khai báo một lớp hiện thực interface Runnable và method Runnable.run() Faculty of Information Technology, HCM University of Technology

  9. Cách 1: Kế thừa từ lớp Thread • class PrimeThread extendsThread { • long minPrime; • PrimeThread( long minPrime ) { • this.minPrime = minPrime; • } • public void run( ) { • // compute primes larger than minPrime • . . . • } • } • PrimeThread p = new PrimeThread(143); • p.start(); Faculty of Information Technology, HCM University of Technology

  10. Cách 2: Hiện thực giao diện Runnable • class PrimeRun implementsRunnable { • long minPrime; • PrimeRun ( long minPrime ) { • this.minPrime = minPrime; • } • publicvoidrun() { • // compute primes larger than minPrime • . . . • } • } • PrimeRun p = new PrimeRun(143); • new Thread(p).start(); Faculty of Information Technology, HCM University of Technology

  11. Thread – Các constructor của lớp Thread • Thread( ) - Allocates a new Thread object. • Thread ( Runnable target) • Thread (Runnable target, String name) • Thread (String name) • Thread (ThreadGroup group, Runnable target) • Thread (ThreadGroup group, Runnable target, String name) • Tạo ra 1 thread mới, target là đối tượng có method run để chạy, tên được xác định bởi name, thuộc về 1 group. • Thread (ThreadGroup group, Runnable target, String name, long stackSize) • Giống trên nhưng có thêm kích thước stack của thread mới. • Thread (ThreadGroup group, String name) Faculty of Information Technology, HCM University of Technology

  12. Thread – Các method khác • void start() • void run() • boolean isAlive() • get/setName() • static void sleep() • setDaemon (boolean on); isDaemon() • Các method join() • … Faculty of Information Technology, HCM University of Technology

  13. Xây dựng ứng dụng MiniChat bằng JBuilder

  14. Xây dựng ứng dụng MiniChat bằng JBuilder Faculty of Information Technology, HCM University of Technology

  15. Đóng các projects đang mở • Chọn menu File.Close projects • Chọn button “All” để đóng tất cả projects đang mở Faculty of Information Technology, HCM University of Technology

  16. Tạo project mới tên MiniChatClient Chọn File.New projects Faculty of Information Technology, HCM University of Technology

  17. Project Wizard – Step 1 of 3 Nhập tên Project, lựa chọn thư mục lưu project, chọn Template (nên để default project), rồi chọn Next Faculty of Information Technology, HCM University of Technology

  18. Project Wizard – Step 2 of 3 Chọn JDK (1.4.1), chọn các đường dẫn lưu các lớp, c.trình nguồn, thư mục Working (nên để mặc định) Faculty of Information Technology, HCM University of Technology

  19. Project Wizard – Step 2 of 3 Thêm các thư viện dùng kèm theo (nếu có) ở tab Required Libraries. Rồi chọn NEXT Faculty of Information Technology, HCM University of Technology

  20. Project Wizard – Step 3 of 3 Xác định mã hóa (UTF-8), thêm các thông tin khác về tên dự án, mô tả… và chọn FINISH Faculty of Information Technology, HCM University of Technology

  21. Tạo 1 ứng dụng trong project MiniChatClient Chọn menu File.New để mở Object Gallery. Chọn icon Application để tạo một ứng dụng mới trong project MiniChatClient Faculty of Information Technology, HCM University of Technology

  22. Application Wizard – Step 1 of 3 Nhập tên ứng dụng, chọn package cho các class sẽ tạo ra, tên lớp Application mới này. Faculty of Information Technology, HCM University of Technology

  23. Application Wizard – Step 2 of 3 Nhập tên class, tựa đề, chọn các mục tạo status bar, About dialog… Rồi chọn NEXT Faculty of Information Technology, HCM University of Technology

  24. Application Wizard – Step 3 of 3 Nhập tên quản lý cấu hình run time (nên để mặc định). Rồi ấn nút FINISH để tạo ứng dụng MiniChatClient Faculty of Information Technology, HCM University of Technology

  25. Tạo ứng dụng c.trình MiniChatClient Faculty of Information Technology, HCM University of Technology

  26. Thiết kế giao diện Chọn tab Design để chuyển sang mode thiết kế giao diện bằng các control JComponents như JButton, JList, JPanel… Faculty of Information Technology, HCM University of Technology

  27. Thiết kế giao diện – Dùng XYLayout Chọn mục Content Pane, thay đổi thuộc tính Layout thành “XYLayout” để có thể thiết kế GUI dạng tự do dựa trên tọa độ trục X và Y. Faculty of Information Technology, HCM University of Technology

  28. Thiết kế giao diện – kéo các thành phần Chọn mục tab “SWING”, chọn icon “JButton” rồi vẽ nó ở góc trái trên form, chọn button vừa vẽ quan sát và gán giá trị cho thuộc tính “name=btnConnect”, “margin=1,1,1,1”, thuộc tính “text = Connect” Faculty of Information Technology, HCM University of Technology

  29. Thiết kế giao diện – tạo các nút • Lập lại các bước trước để kéo thêm các nút: Groups, Login, Users, Send, Logout Faculty of Information Technology, HCM University of Technology

  30. Thiết kế giao diện – tạo danh sách nhóm - Chọn tab “Swing Containers”, chọn icon “JScrollPane” rồi vẽ crollpane chứa listbox hiển thị danh sách nhóm, thiết lập field name = jspGroups Faculty of Information Technology, HCM University of Technology

  31. Thiết kế giao diện • Lặp lại bước vừa rồi để tạo các danh sách jlbUsers, jlbContent. • Vẽ một JTextField, và thiết lập field name = jtfMessage. • Có thể canh trái, trên, phải… các thành phần. Faculty of Information Technology, HCM University of Technology

  32. Thiết kế giao diện – Hoàn tất Faculty of Information Technology, HCM University of Technology

  33. Tạo hàm nắm bắt các sự kiện - Chọn nút Connect, chọn tab Events, đưa cursor về thuộc tính ActionPerformed, rồi ấn Enter để chọn hàm xử lý với tên mặc định Faculty of Information Technology, HCM University of Technology

  34. Tạo hàm nắm bắt các sự kiện (tiếp) • Viết code cho hàm nắm bắt sự kiện ấn nút Connect. • Lặp lại quá trình này cho các nút khác như Groups, Login, Users, Send, Logout. Faculty of Information Technology, HCM University of Technology

  35. Mô hình multi-thread ở client Faculty of Information Technology, HCM University of Technology

  36. Mô hình lập trình multi-thread ở server Faculty of Information Technology, HCM University of Technology

  37. Code phía Server • // code của file MiniChatServerDlg • package jbminichatclient; • import java.awt.*; • import java.awt.event.*; • import javax.swing.*; • import com.borland.jbcl.layout.*; • import java.util.*; • import java.net.*; • import java.io.*; • import java.sql.*; Faculty of Information Technology, HCM University of Technology

  38. Code phía Server (tiếp) • public class MiniChatServerDlg extends JFrame implements MessageListener { • //các thuộc tính cần dùng cho Server • int m_groupcnt; // số nhóm • T_UserRec m_sock_no_user=null; // danh sách các user chưa login • T_GroupList m_grouplist[] = new T_GroupList[10]; // danh sách nhóm • String uname; // tên user • ServerSocket serverSocket; // socket mà server dùng ₫ể accept • final int SERVER_PORT = 256; // port lắng nghe của server • //các thuộc tính cần dùng cho Server • JPanel contentPane; Faculty of Information Technology, HCM University of Technology

More Related