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.
38 trang |
Chia sẻ: Mr Hưng | Lượt xem: 911 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Bài giảng Lập trình ứng dụng MiniChat bằng Java dùng cơ chế xử lý Multithread, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Lập trình ứng dụng MiniChat bằng Java dùng cơ chế xử lý MultithreadTS. Nguyễn Văn Hiệp, Nguyễn Quang HùngE-mail: hungnq2@dit.hcmut.edu.vnWebsite: www.dit.hcmut.edu.vn/~hungnq/courses.htmFaculty of Information Technology, HCM University of TechnologyMục tiêuSử 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 TechnologyMục lụcGiới thiệu c.trình MiniChatKỹ thuật lập trình Java Multi-threadXây dựng ứng dụng Minichat bằng JBuilderThiết kế giao diện cho MiniChat Client/ServerThiết kế MiniChat server đáp ứng các kết nối đồng thời từ các client bằng cơ chế multithreadFaculty of Information Technology, HCM University of TechnologyGiới thiệu về ctrình. MiniChatChứ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/serverServer: 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 Lệnh ULIST Lệnh LOGIN , Lệnh SEND Lệnh LOGOU Dạng reply cho tất cả các request:N N = 1: Thành công, N = 0: Thất bạiFaculty of Information Technology, HCM University of TechnologyGiao diện của ch.trình MiniChat clientCử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 TechnologyGiao diện của MS. Visual C++ IDEChạy Microsoft Visual C++từ Start Programs Microsoft Visual C++Kỹ thuật lập trình Java MultithreadTài liệu tham khảo:java.sun.comFaculty of Information Technology, HCM University of TechnologyKỹ thuật Java MultithreadThread 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 TechnologyCách 1: Kế thừa từ lớp Threadclass PrimeThread extends Thread { 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 TechnologyCách 2: Hiện thực giao diện Runnableclass PrimeRun implements Runnable { long minPrime; PrimeRun ( long minPrime ) { this.minPrime = minPrime; } public void run() { // compute primes larger than minPrime . . . }}PrimeRun p = new PrimeRun(143); new Thread(p).start(); Faculty of Information Technology, HCM University of TechnologyThread – Các constructor của lớp ThreadThread( ) - 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 TechnologyThread – Các method khácvoid start()void run()boolean isAlive()get/setName()static void sleep()setDaemon (boolean on); isDaemon()Các method join()Xây dựng ứng dụng MiniChat bằng JBuilderFaculty of Information Technology, HCM University of TechnologyXây dựng ứng dụng MiniChat bằng JBuilderFaculty of Information Technology, HCM University of TechnologyĐóng các projects đang mởChọn menu File.Close projectsChọn button “All” để đóng tất cả projects đang mởFaculty of Information Technology, HCM University of TechnologyTạo project mới tên MiniChatClientChọn File.New projectsFaculty of Information Technology, HCM University of TechnologyProject Wizard – Step 1 of 3Nhậ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 NextFaculty of Information Technology, HCM University of TechnologyProject Wizard – Step 2 of 3Chọ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 TechnologyProject Wizard – Step 2 of 3Thêm các thư viện dùng kèm theo (nếu có) ở tab Required Libraries. Rồi chọn NEXTFaculty of Information Technology, HCM University of TechnologyProject Wizard – Step 3 of 3Xá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 FINISHFaculty of Information Technology, HCM University of TechnologyTạo 1 ứng dụng trong project MiniChatClientChọn menu File.New để mở Object Gallery. Chọn icon Application để tạo một ứng dụng mới trong project MiniChatClientFaculty of Information Technology, HCM University of TechnologyApplication Wizard – Step 1 of 3Nhậ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 TechnologyApplication Wizard – Step 2 of 3Nhập tên class, tựa đề, chọn các mục tạo status bar, About dialog Rồi chọn NEXTFaculty of Information Technology, HCM University of TechnologyApplication Wizard – Step 3 of 3Nhậ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 MiniChatClientFaculty of Information Technology, HCM University of TechnologyTạo ứng dụng c.trình MiniChatClientFaculty of Information Technology, HCM University of TechnologyThiế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, JPanelFaculty of Information Technology, HCM University of TechnologyThiết kế giao diện – Dùng XYLayoutChọ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 TechnologyThiết kế giao diện – kéo các thành phầnChọ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 TechnologyThiết kế giao diện – tạo các nútLập lại các bước trước để kéo thêm các nút: Groups, Login, Users, Send, LogoutFaculty of Information Technology, HCM University of TechnologyThiế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 TechnologyThiết kế giao diệnLặ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 TechnologyThiết kế giao diện – Hoàn tất Faculty of Information Technology, HCM University of TechnologyTạ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 địnhFaculty of Information Technology, HCM University of TechnologyTạ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 TechnologyMô hình multi-thread ở clientFaculty of Information Technology, HCM University of TechnologyMô hình lập trình multi-thread ở serverFaculty of Information Technology, HCM University of TechnologyCode phía Server// code của file MiniChatServerDlgpackage 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 TechnologyCode phía Server (tiếp)public class MiniChatServerDlg extends JFrame implements MessageListener {//các thuộc tính cần dùng cho Serverint m_groupcnt; // số nhómT_UserRec m_sock_no_user=null; // danh sách các user chưa loginT_GroupList m_grouplist[] = new T_GroupList[10]; // danh sách nhómString uname; // tên userServerSocket serverSocket; // socket mà server dùng ₫ể acceptfinal int SERVER_PORT = 256; // port lắng nghe của server//các thuộc tính cần dùng cho ServerJPanel contentPane;
Các file đính kèm theo tài liệu này:
- chuong4_hung_laptrinhminichatbangjbuilder_multithread_8716.ppt