Lập trình ứng dụng minichat bằng java dùng cơ chế xử lý multithread

Tài liệu 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ý 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.htmMụ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. 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ế multithreadHCM 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 gia...

ppt38 trang | Chia sẻ: Khủng Long | Lượt xem: 1456 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Lập trình ứng dụng minichat bằng java dùng cơ chế xử lý multithread, để tải tài liệu gốc về máy 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.htmMụ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. 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ế multithreadHCM 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ạiHCM 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”HCM University of TechnologyGiao diện của MS. Visual C++ IDEChạy Microsoft Visual C++từ Start  Programs  Microsoft Visual C++HCM University of TechnologyKỹ thuật lập trình Java MultithreadTài liệu tham khảo:java.sun.comKỹ 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()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(); 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(); 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)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()HCM University of TechnologyXây dựng ứng dụng MiniChat bằng JBuilderXây dựng ứng dụng MiniChat bằng JBuilderHCM 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ởHCM University of TechnologyTạo project mới tên MiniChatClientChọn File.New projectsHCM 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 NextHCM 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)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 NEXTHCM 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 FINISHHCM 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 MiniChatClientHCM 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.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 NEXTHCM 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 MiniChatClientHCM University of TechnologyTạo ứng dụng c.trình MiniChatClientHCM 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, JPanelHCM 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.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”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, LogoutHCM 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 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.HCM University of TechnologyThiết kế giao diện – Hoàn tất 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 địnhHCM 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.HCM University of TechnologyMô hình multi-thread ở clientHCM University of TechnologyMô hình lập trình multi-thread ở serverHCM 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.*;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;HCM University of Technology

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

  • ppttailieu.ppt