Tải bản đầy đủ (.pdf) (9 trang)

Internet Relay Chat Protocol - Tìm hiểu và ứng dụng phần 9 potx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (105.39 KB, 9 trang )

Luận văn: Internet Relay Chat Protocol tìm hiểu và ứng dụng Chương II: Đa
Luồng(multithreading)
www.diachiweb.com - Trang 73





P
P
h
h
a
a
à
à
n
n


I
I
V
V
:
:




Y


Y
e
e
â
â
u
u


C
C
a
a
à
à
u
u


&
&


K
K
i
i
e
e
á

á
n
n


T
T
r
r
u
u
ù
ù
c
c




C
C
h
h
ư
ư
ơ
ơ
n
n
g

g




T
T
r
r
ì
ì
n
n
h
h









ü Chương I: Yêu cầu chức năng & phi chức năng

üChương II: Kiến trúc chương trình








Luận văn: Internet Relay Chat Protocol tìm hiểu và ứng dụngChương I: Yêu Cầu Chức Năng &ø
Phi Chức Năng
www.diachiweb.com - Trang 74
Chương I: Yêu Cầu Chức Năng &ø Phi Chức Năng
1. Đối với Chat Client
Yêu cầu chức năng
Ø Chương trình cho phép người dùng lưu giữ thông tin về servername và port ngoài ra còn
thông tin về nhóm server
Ø Cho phép thêm mới server
Ø Cho phép cập nhật lai thông tin server
Ø Cho phép hủy thông tin server
Ø Lưu giữ thông tin cấu hình hiện trạng của lần hoạt động trước ví dụ: thông tin về
nickname, realname,email address, v.v…
Ø Cho phép user connect và disconnect trong các trường hợp sau
Disconnect khi chưa connect xong ở mức TCP.
Disconnect khi connect xong ở mức TCP nhưng chưa xong ở mức application (chưa
thiết lập kết nối xong theo giao thức IRC).
Disconnect khi đã xong ở mức application.
Ø Việc thiết lập kết nối và cắt đứt kết nối phải hoạt động theo cơ chế multithread để đảm
bảo chương trình không bò block
Ø Các message được truyền, nhận, và xữ lý cũng phải được hoạt động theo cơ chế
multithread nhằm bảo đảm chương trình hoạt động hiệu quả hơn.
Ø Chức năng tham gia vào một hay nhiều channel.
Ø Chức năng thoát khỏi channel.
Ø Về chức năng chat phải cho phép người sử dụng thực hiện chat với hai cách:
Chat riêng với user.

Chat trên channel.
Ø Chương trình phải cho phép người sử dụng chọn user để chat
Ø Chương trình cho phép người dùng Ban hay Kick user ra khỏi channel
Ø Chức năng thay đổi nick name hiện tại thành nick khác.
Ø Chức năng thiết lập cơ chế trả lời tự động (cơ chế away message).
Ø Chức Năng DCC(Direction Connection Chat) Chat.

Yêu cầu phi chức năng:

Ø Chức năng truy vấn user (Query User)
Ø Chức năng truy vấn Who is User.
Ø Chức năng send CTCP.
Ø Chức năng về giao diện: tùy chọn về màu sắc
Ø Chức năng chat thông qua proxy server


Luận văn: Internet Relay Chat Protocol tìm hiểu và ứng dụngChương I: Yêu Cầu Chức Năng &ø
Phi Chức Năng
www.diachiweb.com - Trang 75



2. Đối với chat server
Yêu cầu chức năng
Ø Server phải phục vụ nhiều client trong cùng thời điểm, mỗi client được phục vụ liên
tục.
Ø Chức năng Restart và ShutDown server
Ø Chức năng tùy chọn cấu hình cho server như chỉ số port, tên server, số lượng tối đa
connection, số lượng tối đa channel được phép mở.
Ø Chức năng kiểm soát và quản lý user trên server, trên server có thể kiểm soát quá trình

truyền nhận message của từng client.

Yêu cầu phi chức năng
Ø Chức năng theo dõi thông số hoạt động, tỉ lệ phần trăm tài nguyên mà server chiếm giữ
Ø Chức năng kết nối và chấp nhận kết nối với server khác, chuyển tiếp message đến
server khác.























Luận văn: Internet Relay Chat Protocol tìm hiểu và ứng dụngChương II: Kiến trúc chương trình:

www.diachiweb.com - Trang 76


Chương II: Kiến trúc chương trình:
A. Chat Client
Chương trình gồm 2 nhóm lớp chính
1. Lớp giao diện
Ø frmAddNew
Lớp frmAddNew tạo ra form cho phép user nhập vào server mới hoặt cập
nhật lại thông tin server
Ø frmBanKick
Lớp frmBanKick tạo ra form cho phép user có thể ban hay kick user nếu
user có quyền
Ø frmChangeNick
Lớp này cho phép user thay đổi nickname của mình.

Ø frmChannelStatus
Lớp frmChannelStatus tạo ra khi user join thành công vào một channel trên
form này gồm 3 control txtChannelStatus trạng thái channel, txtMessage, lstNickName
đây là danh sách user hiện có trên channel danh sách này luôn được cập nhật và thay đổi
khi có sự tham gia hay thoát khỏi của user.

Ø frmChannelStatusListenner
Lắng nghe sự kiện của channelstatus

Ø frmChannelStatusKeylistener
Lắng nghe sự kiện phím của channelstatus


Ø frmChatForm

Khi thực hiện chat với riêng với từng user, mỗi user được chat sẽ có một
frmChatForm

Ø frmConnect
Lớp này sẽ hiển thò form connect to server trên form này có chức năng
chọn server, Addserver Editserver, Deleteserver.v.v …

Ø frmConnectListenEvent
Lớp frmConnectListenEvent chòu trách nhiệm lắng nghe và xử lý sự kiện
cho form connect.

Ø frmDCCChat
Luận văn: Internet Relay Chat Protocol tìm hiểu và ứng dụngChương II: Kiến trúc chương trình:
www.diachiweb.com - Trang 77
Lớp frmDCCChat hiển thò form DCCChat, form này cho phép user tạo ra
connection mới kết nối trực tiếp vào user muốn chat với mình (Direction Connection
Chat)

Ø frmGetListChannel
lớp này cho phép user truy vấn đến server lấy về danh sách channel hiện
có.

Ø frmJoinChannel
Lớp frmJoinChannel cho phép user chọn channel để join tuy nhiên danh
sách channel trên lớp này là những channel thông dụng đôi khi không có trên server trước
khi join bạn nên dùng form getlistchannel.

Ø frmJoinChannelListener
Lớp này chòu trách nhiệm lắng nghe và xữ lý sự kiện cho form join channel
Ø frmMainForm

Lớp mainform là form chinh lớp này sẽ tồn tại khi chương trình tạo ra và
duy trì suốt trong chương trình cho đến khi kết thúc. Trên lớp này lưu giữ các tham chiếu
đến các đối tượng, có thể xem lớp này là lớp lưu giữ các biến toàn cục.

Ø frmMainFormListener
frmMainFormListener lắng nghe và xữ lý sự kiện cho lớp frmMainForm

Ø frmMainFormMouseEvent
frmMainFormMouseEvent lắng nghe và xữ lý sự kiện mouse cho lớp
frmMainForm

Ø frmPartChannel
lớp part channel dùng cho user thoát khỏi channel mà họ đã join

Ø frmSetAway
Lớp frmSetAway dùng để thiết lập việc trả lời tự động


2.Lớp xữ lý

Ø threadIn
Nhận message nhập vào phân phối message cho từng trường hợp trong quá
trình thiết lập kết nối giữa client và server.

Ø threadOut
Chòu trách nhiệm xuất message đến server.

Luận văn: Internet Relay Chat Protocol tìm hiểu và ứng dụngChương II: Kiến trúc chương trình:
www.diachiweb.com - Trang 78
Ø threadJoin

Nhận message nhập vào và xữ lý cho từng trường hợp sau quá trình thiết
lập kết nối thành công

Ø choiseItemListener
Xữ lý cho sự kiện chọn combo box và listbox

Ø openSocket
Lớp này chòu trách nhiệp mở kết nối ở cấp TCP liên kết đến server

Ø openServerSocket
Lớp này mở ServerSocket lắng nghe kết nối cho dòch vụ
DCCChat(Direction Connection Chat)

Ø DCCChatGetData
Nhận message từ DCCChatServer

Ø DCCChatGetDataServer
Nhận message từ DCCChatClient

Ø GetDataFromSocket
Lớp này cho phép đọc dữ liệu từ luồng nhập và xuất dữ liệu từ luồng xuất
lớp này phục vụ cho lớp threadIn và lớp threadOut.

Ø SettingFile
Lớp SettingFile đọc và ghi file cấu hình hệ thống

Ø StatusButton
Lớp này kế thừa từ Button Command
Ø channelFileProcess
đọc và ghi file luu giữ danh sách channel


B. Chat Server

1. Lớp giao diện

Ø frmConfig
Hiển thò form cấu hình cho server

Ø frmListUser
Hiển thò danh sách user
Ø frmMainForm
Luận văn: Internet Relay Chat Protocol tìm hiểu và ứng dụngChương II: Kiến trúc chương trình:
www.diachiweb.com - Trang 79
form chính

2. Lớp xữ lý

Ø ChannelNameItem
Lớp này tao ra đối tượng channelItem đối tượng này lưu giữ thông tin
channel số lượng user hiện có, topic, tên channelv.v…

Ø GetDataFromSocket
Lớp này nhận vào đối tượng socket và đọc và ghi dữ liệu lên luồng xuất
nhập

Ø IRCServerSocket
Lớp này chòu trách nhiệm tạo socket đợi và chấp nhận kết nối từ client, khi
có client kết nối thành công (ở mức TCP) lớp này sẽ tạo ra một đối tượng UserConnectionItem
truyền socket mà nó nhận được làm đối số.


Ø NickNameItem
Một đối tượng UserConnectionItem sẽ là con của đối tượng
NickNameItem, đối tượng này sẽ chứa thông số về cơ bản user như: nickname, hostname,
username, realname.

Ø ProcessClientConnection
Lớp này sẽ chòu trách nhiệm xử lý message khi message gởi đến server.
Mọi xử lý trong lớp này do hàm DataArrive() xử lý

Ø StringProcess
Lớp StringProcess là lớp bổ trợ cho việc xử lý chuổi để phân tích message

Ø UserConnectionItem
Đối tượng này được kế thừa từ NickNameItem lớp này chứa các thông số
ChannelItem, đối tượng socket đang phục vụ cho nó.

Ø threadIn
Lớp này có nhiệm vụ đọc dữ liệu nhập vào mà theo cơ chế multithread để
chương trình không bò block

Ø threadOut
Cũng tương tự như lớp threadIn lớp này có nhiệm vụ xuất message.


Để có thêm thông tin chi tiết cho các lớp đối tượng tham khảo danh sách các lớp chat client
vàDanh Sách các lớp Server
Luận văn: Internet Relay Chat Protocol tìm hiểu và ứng dụng Kết luận:
www.diachiweb.com - Trang 80
Kết luận:
Kết quả đạt được:

1. Tìm hiểu được giao thức Internet Relay Chat.
2. Xây dựng chương trình chat client và chat server chuẩn.
3. Chat client có thể kết nối vào chat server chuẩn khác.
4. Chat server có thể làm việc được với chat client chuẩn khác.

Việc chưa làm được:
1. Chưa hổ trợ một số chức năng cho người quản trò.
2. Chat client chưa có khả năng chat thông qua proxy server.
3. Giao diện người dùng chưa thân thiện.

Phân công công việc:
Chung Diệu Tùng: - xây dựng các lớp giao tiếp với server theo giao thức chuẩn.
- xây dựng thành phần xử lý sự kiện.
Trần Thái Lộc: - xây dựng thành phần giao diện.
- xây dựng báo cáo.



Hướng phát triển đề tài:
Nếu có điều kiện phát triển tiếp tục đề tài em sẽ hoàn thiện thêm chương trình chat client
bằng cách thêm vào các tính năng chat thông qua proxy server, multimedia chat và xây dựng
chương trình multimedia chat server để giao tiếp với chat client phục vụ nhu cầu ngày càng cao
của người sử dụng.
Luận văn: Internet Relay Chat Protocol tìm hiểu và ứng dụng Tài liệu tham khảo:
www.diachiweb.com - Trang 81
Tài liệu tham khảo:

F Core Java volume I, II Fundamential Cays.Horstmann, Gary Cornbll
F Giáo trình lý thuyết và bài tập Java Trần Tiến Dũng
F Java How To Program Deitel

F Java2 Nguyễn Tiên, Ngô Quốc Việt
FRFC 1459, J. Oikarinen, D. Reed – 05/1993
FRFC 2810, C. Kalt – 04/2000
FRFC 2811, C. Kalt – 04/2000
FRFC 2812, C. Kalt – 04/2000
FRFC 2813, C. Kalt – 04/2000
F TCP/IP MCSE Study Guide GregP.Bulette

×