Download presentation
Presentation is loading. Please wait.
Published byえつま うえや Modified over 6 years ago
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 Website:
2
Faculty of Information Technology, HCM University of Technology
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
Faculty of Information Technology, HCM University of Technology
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 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 Technology
10
Cách 2: Hiện thực giao diện Runnable
class 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 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
Faculty of Information Technology, HCM University of Technology
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
Faculty of Information Technology, HCM University of Technology
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
Faculty of Information Technology, HCM University of Technology
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 JPanel contentPane; Faculty of Information Technology, HCM University of Technology
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.