L?p tr - PowerPoint PPT Presentation

About This Presentation
Title:

L?p tr

Description:

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_at_dit.hcmut.edu.vn – PowerPoint PPT presentation

Number of Views:30
Avg rating:3.0/5.0
Slides: 39
Provided by: Nguye79
Category:
Tags:

less

Transcript and Presenter's Notes

Title: L?p tr


1
L?p trình ?ng d?ng MiniChat b?ng Java dùng co ch?
x? lý Multithread
  • TS. Nguy?n Van Hi?p,
  • Nguy?n Quang Hùng
  • E-mail hungnq2_at_dit.hcmut.edu.vn
  • Website www.dit.hcmut.edu.vn/hungnq/courses.htm

2
M?c tiêu
  1. S? d?ng co ch? Java multithread.
  2. Bài t?p ?ng d?ng MiniChat cho phép làm quen v?i
    qui trình xây d?ng 1 chuong trình theo giao di?n
    Dialog based b?ng JBuilder.

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 dáp ?ng các k?t n?i d?ng
    th?i t? các client b?ng co ch? multithread

4
Gi?i thi?u v? ctrình. MiniChat
  • Ch?c nang cho phép nhi?u user dang ký vào các
    nhóm d? 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 d?n
    các user khác.
  • Client giao ti?p v?i các user cho phép h? dang
    ký nhóm g?i/nh?n thông tin cho nhau.
  • Ð?nh nghia giao th?c dùng cho h? th?ng MiniChat
  • L?nh GLIST ltCRLFgt
  • L?nh ULIST ltCRLFgt
  • L?nh LOGIN lttên groupgt,lttên usergt ltCRLFgt
  • L?nh SEND ltstringgt ltCRLFgt
  • L?nh LOGOU ltCRLFgt
  • D?ng reply cho t?t c? các request
  • N ltchu?i d? li?u ph? kèm theogt
  • N 1 Thành công, N 0 Th?t b?i

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
6
Giao di?n c?a MS. Visual C IDE
Ch?y Microsoft Visual Ct? Start ? Programs ?
Microsoft Visual C
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 chuong
    trình. Máy ?o JVM cho phép m?t ?ng d?ng có nhi?u
    lu?ng th?c thi d?ng th?i.
  • Có 2 cách dùng Java multithread (da 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()

9
Cách 1 K? th?a t? l?p Thread
  1. class PrimeThread extends Thread
  2. long minPrime
  3. PrimeThread( long minPrime )
  4. this.minPrime minPrime
  5. public void run( )
  6. // compute primes larger than minPrime
  7. . . .
  8. PrimeThread p new PrimeThread(143)
  9. p.start()

10
Cách 2 Hi?n th?c giao di?n Runnable
  1. class PrimeRun implements Runnable
  2. long minPrime
  3. PrimeRun ( long minPrime )
  4. this.minPrime minPrime
  5. public void run()
  6. // compute primes larger than minPrime
  7. . . .
  8. PrimeRun p new PrimeRun(143)
  9. new Thread(p).start()

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à d?i tu?ng có
    method run d? ch?y, tên du?c xác d?nh b?i name,
    thu?c v? 1 group.
  • Thread (ThreadGroup group, Runnable target,
    String name, long stackSize)
  • Gi?ng trên nhung có thêm kích thu?c stack c?a
    thread m?i.
  • Thread (ThreadGroup group, String name)

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()

13
Xây d?ng ?ng d?ng MiniChat b?ng JBuilder
14
Xây d?ng ?ng d?ng MiniChat b?ng JBuilder
15
Ðóng các projects dang m?
  • Ch?n menu File.Close projects
  • Ch?n button All d? dóng t?t c? projects dang m?

16
T?o project m?i tên MiniChatClient
Ch?n File.New projects
17
Project Wizard Step 1 of 3
Nh?p tên Project, l?a ch?n thu m?c luu project,
ch?n Template (nên d? default project), r?i ch?n
Next
18
Project Wizard Step 2 of 3
Ch?n JDK (1.4.1), ch?n các du?ng d?n luu các l?p,
c.trình ngu?n, thu m?c Working (nên d? m?c d?nh)
19
Project Wizard Step 2 of 3
Thêm các thu vi?n dùng kèm theo (n?u có) ? tab
Required Libraries. R?i ch?n NEXT
20
Project Wizard Step 3 of 3
Xác d?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
21
T?o 1 ?ng d?ng trong project MiniChatClient
Ch?n menu File.New d? m? Object Gallery. Ch?n
icon Application d? t?o m?t ?ng d?ng m?i trong
project MiniChatClient
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.
23
Application Wizard Step 2 of 3
Nh?p tên class, t?a d?, ch?n các m?c t?o status
bar, About dialog R?i ch?n NEXT
24
Application Wizard Step 3 of 3
Nh?p tên qu?n lý c?u hình run time (nên d? m?c
d?nh). R?i ?n nút FINISH d? t?o ?ng d?ng
MiniChatClient
25
T?o ?ng d?ng c.trình MiniChatClient
26
Thi?t k? giao di?n
Ch?n tab Design d? chuy?n sang mode thi?t k? giao
di?n b?ng các control JComponents nhu JButton,
JList, JPanel
27
Thi?t k? giao di?n Dùng XYLayout
Ch?n m?c Content Pane, thay d?i thu?c tính Layout
thành XYLayout d? có th? thi?t k? GUI d?ng t?
do d?a trên t?a d? tr?c X và Y.
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
namebtnConnect, margin1,1,1,1, thu?c tính
text Connect
29
Thi?t k? giao di?n t?o các nút
  • L?p l?i các bu?c tru?c d? kéo thêm các nút
    Groups, Login, Users, Send, Logout

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
31
Thi?t k? giao di?n
  • L?p l?i bu?c v?a r?i d? 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.

32
Thi?t k? giao di?n Hoàn t?t
33
T?o hàm n?m b?t các s? ki?n
- Ch?n nút Connect, ch?n tab Events, dua cursor
v? thu?c tính ActionPerformed, r?i ?n Enter d?
ch?n hàm x? lý v?i tên m?c d?nh
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 nhu
    Groups, Login, Users, Send, Logout.

35
Mô hình multi-thread ? client
36
Mô hình l?p trình multi-thread ? server
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.

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_usernull // danh sách các
    user chua login
  • T_GroupList m_grouplist new T_GroupList10
    // 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
Write a Comment
User Comments (0)
About PowerShow.com