Tải bản đầy đủ (.doc) (84 trang)

Xây dựng website giải trí

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 (2.38 MB, 84 trang )

Luận Văn Tốt Nghiệp
Xây dựng Website giải trí
Phần I: Tìm hiểu về Công nghệ xây dựng Website
Hiện nay có rất nhiều công nghệ để xây dựng nên những Website như là
JSP (Java Server Page), ASP (Active Server Page) … Ở đây, chúng ta chỉ tìm
hiểu về ASP là công cụ được sử dụng để xây dựng Website này.
Chương I: Giới thiệu về ASP (ACTIVE SERVER PAGES)
1) Tìm hiểu công nghệ ASP
a. ASP là gì :
- Microsoft Active Server Pages là một môi trường hỗ trợ cho các Script
chạy trên Server (Server-Side Scripting) cho phép tạo hoặc xây dựng các
ứng dụng Web mạnh chứa các thẻ HTML, text và các lệnh Script hay các
ứng dụng Web động, giao tiếp giữa Client và Server một cách hiệu qủa.
- ASP hoạt động dựa vào các Script do người lập trình tạo ra. Các trang
ASP có thể gọi các thành phần ActiveX để thực hiện các công việc như kết
nối với với một Database hoặc thực hiện một tính toán kinh doanh. Với
ASP, bạn có thể đưa nội dung tương tác với các trang Web của bạn hoặc
xây dựng toàn bộ các ứng dụng Web sử dụng các trang HTML như giao tiếp
với khách hàng của bạn.
b. Trang ASP:
Mỗi trang .asp có thể bao gồm một trong các thành phần sau: HTML,
Script của ngôn ngữ VBScript hoặc JScript, Text trong đó các tag HTML và
Text sẽ được xử lý bình thường như đối với các văn bản HTML (.html)
thông thường, các Script sẽ được một bộ phận (engine) của ASP thông dòch
và thi hành trên Server. Có thể xem trang ASP như một trang HTML có bổ
sung các ASP Script Command.
c. Quá trình biên dòch một trang asp :
Các Script của ASP được chứa trong các text file có phần mở rộng
là .asp. Script thường được viết bằng một ngôn ngữ VBScript hay
JavaScript.
Khi một Web browser gửi yêu tới một trang .asp. Khi đó Web server


sẽ đọc và tiến hành biên dòch các lệnh script trong đó và trả kết quả về cho
Web browser dưới dạng của một trang HTML.
d. Tính chất của asp :
GVHD: Th.S Ninh Xuân Hương
Trang 1
Luận Văn Tốt Nghiệp
Xây dựng Website giải trí
- ASP có tính chất động: ta có thể chèn một đoạn Script vào bất kỳ nơi
nào trong trang HTML, đây là đăc tính quan trọng nhất và là cốt lõi của
công nghệ ASP, chính điều này đã mang lại rất nhiều điều thú vò mà trong
HTML không có.
- ASP có tính hướng đối tượng: với các build-in Object rất tiện dụng :
Request, Response, Server, Apllication, Session, …
- Có khả năng mở rộng các thành phần ActiveX Server (ActiveX
Server Components).
- Các ứng dụng ASP dễ tạo vì dùng các ASP Script để viết các ứng
dụng. Khi tạo các Script của ASP ta có thể dùng bất kỳ một ngôn ngữ Script
nào, chỉ cần có scripting engine tương ứng của ngôn ngữ đó.
- Việc chèn các Script vào file HTML làm cho quá trình xử lý tạo ra văn
bản HTML (Dynamic Pages) đồng thời với việc xử lý các Script, điều bày
sẽ làm cho hoạt động của trang Web sẽ trở nên linh động hơn, uyển chuyển
hơn.
- Các file .asp cũng tương thích với file HTML, và việc viết các Script
đơn giản, không phải biên dòch hay liên kết như việc lập trình thông thường,
ASP cung cấp các đối tượng tiện lợi cho nhiều thao tác như: Request,
Response, Server, Apllication, Session. Các đối tượng có sẵn này của môi
trường ASP sẽ giúp cho việc giao tiếp dữ liệu giữa Client và Server thực sự
tiện lợi, cũng như việc quản lý ứng dụng một cách linh hoạt nhờ vào các
biến Session, Application.
e. Ưu điểm và khuyết điểm của ASP

 Ưu điểm :
ASP bổ sung cho các công nghệ đã có từ trước như CGI (Common
Gateway Interface), Giúp người dùng xây dựng các ứng dụng web với những
tính năng sinh động. Tuy nhiên, khác với CGI, các trang ASP không cần phải
hợp dòch.
Dễ dàng tương thích với các công nghệ của Microsoft. ASP sử dụng
ActiveX Data Object (ADO) để thao tác với cơ sở dữ liệu hết sức tiện lợi.
Với những gì ASP cung cấp, các nhà phát triển ứng dụng Web dễ dàng
tiếp cận công nghệ này và nhanh chóng tạo ra các sản phẩm có giá trò. Điều
này hết sức có ý nghóa trong điều kiện phát triển như vũ bão của tin học ngày
nay. Nó góp phần tạo nên một đội ngũ lập trình Web lớn mạnh.
GVHD: Th.S Ninh Xuân Hương
Trang 2
Luận Văn Tốt Nghiệp
Xây dựng Website giải trí
ASP có tính năng mở. Nó cho phép các nhà lập trình xây dựng các
Component và đăng ký sử dụng dễ dàng. Hay nói cách khác ASP có tính
năng COM (Component Object Model).
 Khuyết điểm :
ASP chỉ chạy và tương thích trên môi trường Windows, điều này làm
ASP bò hạn chế rất nhiều.
Dùng ASP chúng ta sẽ gặp không ít khó khăn trong việc can thiệp sâu
vào hệ thống như các ứng dụng CGI.
ASP không được sự hổ trợ nhiều từ các hãng thứ ba.
Các ứng dụng ASP chạy chậm hơn công nghệ Java Servlet.
Tính bảo mật thấp. Không giống như CGI hay Java servlet, các mã ASP
đều có thể đọc được nếu người dùng có quyền truy cập vào web server. Có lẽ
đây là lý do quan trọng nhất để người dùng không chọn công nghệ ASP.
2) Các thành phần và cú pháp ASP :
ASP bao gồm các thành phần sau :

1. Các bộ dòch ngôn ngữ VBScript và JScript.
2. Thư viện các đối tượng, chuyên dùng để truy xuất Database thông qua
ODBC Driver (Active Server Data Object – ADO). Thư viện các đối
tượng hỗ trợ cho việc viết các trang ASP.
Một file ASP thực chất là một văn bản, nó có thể bao gồm các thành
phần sau:
+Văn Bản (Text)
+ Các HTML tag.
+ Các Script. Mỗi Script này sẽ thực hiện một công việc nào đó, giống như
các phát biểu của một ngôn ngữ lập trình. Một Script là một chuỗi các
lệnh script, nó có thể là:
1. Một phép gán giá trò cho một biến.
2. Một yêu cầu Web Server gửi thông tin đến Brower.
3. Tổ hợp các lệnh riêng rẽ thành một thủ tục hay một hàm
giống như trong các ngôn ngữ lập trình.
Việc thi hành một Script là quá trình gửi chuỗi các lệnh tới Scripting
Engine, tại đây ASP sẽ thông dòch các lệnh này và chuyển tiếp cho máy tính.
Script được viết bằng một ngôn ngữ với các luật được đặt tả nào đó, nếu ta
muốn sử dụng một Script Language nào thì trên Server phải chạy Script Engine
GVHD: Th.S Ninh Xuân Hương
Trang 3
Luận Văn Tốt Nghiệp
Xây dựng Website giải trí
cho ngôn ngữ đó. Trong ASP cung cấp hai Script Engine là VBScript và JScript
(với VBScript là mặc nhiên). Tuy nhiên ASP không phải là ngôn ngữ Script,
mà nó chỉ cung cấp một môi trường để xử lý các Script mà ta chèn vào trong
các file .asp, việc chèn này phải tuân theo một cú pháp nhất đònh của ASP.
a .Dấu ngăn cách (Delimiter):
Trong văn bản ASP ta sử dụng các dấu <% và%> để ngăn cách phần
văn bản HTML với phần Script, hay cụ thể là bất cứ một phát biểu Script nào

cũng đều phải nằm giữa hai ngăn cách <% và %>
b. Câu lệnh (Statement):
Một câu lệnh trong VBScript hay trong ngôn ngữ Script khác là một cấu
trúc dùng để thực hiện một thao tác, câu lệnh phải được khai báo hoặc đònh
nghóa trong ngôn ngữ Scripting. Các ngôn ngữ Script trong ASP cung cấp cho ta
hầu hết các cấu trúc điều khiển : IF…ELSE, For, While, DO WHILE… cùng với
những kiểu dữ liệu cơ bản như Integer , char, string, Array … để sử dụng.
c. SCRIPT tag:
Các phát biểu, biểu thức, lệnh, hay thủ tục mà bạn sử dụng bên trong hai
dấu ngăn cách <% và %> phải được nhìn nhận bởi ngôn ngữ Script mặc đònh
hoặc ngôn ngữ Script được khai báo ở đầu trang ASP. Ngôn ngữ Scripting mặc
đònh của ASP là VBScript, tuy nhiên với ASP ta vẫn có thể sử dụng các ngôn
ngữ lập trình khác bên trong bằng cách sử dụng thẻ <SCRIPT> và </SCRIPT>
d. Include file:
Khi tạo một ứng dụng Web, bao gồm nhiều trang ASP, nếu như toàn bộ
các trang đều cần sử dụng những thông tin chung nào đó chẳng hạn như các
hằng, giá trò … Để tránh lại việc đònh nghóa lại các giá trò này, ta có thể sử dụng
cơ chế include file của ASP (giống như trong ngôn ngữ lập trình cổ điển). Để
include một file trong trang ASP ta sử dụng cú pháp sau:
<! #include Virtual/File="filename" >
3) Các đối tượng cơ bản của asp:
ASP cung cấp cho người lập trình các đối tượng có sẵn, mỗi đối tượng này
sẽ thực hiện một chức năng riêng nào đó, các đối tượng có sẵn (built-in oject)
bao gồm:
Tên đối tượng Chức năng
Request Lấy thông tin từ một user.
GVHD: Th.S Ninh Xuân Hương
Trang 4
Luận Văn Tốt Nghiệp
Xây dựng Website giải trí

Respone Gửi thông tin tới một user.
Server Điều khiển môi trường hoạt động của ASP.
Session Lưu giữ thông tin về một session của user.
Application Chia sẻ thông tin giữa các user trong cùng một ứng dụng.
a. Đối tượng Request
Với đối tượng Request, các ứng dụng ASP có thể dễ dàng lấy được thông
tin gửi tới từ user.
Đối tượng Request cho phép truy xuất chi tới bất kỳ thông tin nào user gửi
tới bằng giao thức HTTP như:
1. Các thông tin chuẩn nằm trong các biến Server (Variable Server).
2. Các tham số được gửi tới bằng phương thức POST.
3. Các thông tin được gửi tới bằng phương thức GET.
4. Các Cookies (là thông tin của User được gửi kèm theo) tới từ Browser.
5. Các Client Certificates.
Đối tượng Request tìm kiếm các giá trò mà Client Browser đưa vào Server
trong khi có một yêu cầu HTTP.
Cú pháp:
Request.collection|property|method
Collections:
− Cookies: Giá trò của các Cookie gởi trong yêu cầu HTTP.
− Form: Giá trò các phần tử Form trong thân của yêu cầu HTTP.
− QueryString: Giá trò của các biến trong trong chuỗi truy vấn HTTP.
− ServerVariables: Giá trò của các biến môi trường đã được xác đònh
trước.
Properties:
− TotalBytes: Tổng số byte Client đang gởi trong thân của yêu cầu.
Các tham số biến là chuỗi ký tự chỉ rõ mục (item) được tìm kiếm từ một
collection hoặc được sử dụng như là mục vào đối với một phương thức
(method) hoặc một property.
Ngoài ra, tất cả các biến có thể được truy cập một cách trực tiếp bằng

cách gọi cú pháp Request(variable) mà không cần tên collection. Trong trường
hợp này, Web Server tìm kiếm các collection theo thứ tự sau:
1. QueryString
1. Form
GVHD: Th.S Ninh Xuân Hương
Trang 5
Luận Văn Tốt Nghiệp
Xây dựng Website giải trí
2. Cookies
3. ClientCertificate
4. ServerVariables
b. Đối tượng Response
Bạn có thể sử dụng đối tượng Response để gởi kết xuất tới Client.
Cú pháp
Response.collection |property| method
Collections : Cookies : Chỉ đònh giá trò cookie và thiết lập các giá trò cookie.
Properties :
− Buffer: Chỉ ra liệu trang kết xuất được đệm hay không.
− ContentType : Chỉ đònh kiểu nội dung HTTP (vd:”Text/HTML”) khi
đáp ứng.
− Expires : Chỉ đònh thời gian trước khi một trang lưu trữ trên Browser kết
thúc.
− CacheControl: Xác đònh các Proxy Server có thể kết quả đầu ra phát
sinh bởi ASP.
− Charset: Thêm vào bộ ký tự Header Content-Type
− ExpiresAbsolute: Ngày giờ 1 trang được dấu trên Browser hết hạn
− IsClientConnected: Kiểm tra kết nối Client có bò gián đoạn từ Server
− PICS: Thêm giá trò vào nhãn PICS field pics-label của Header
− Status: Giá trò dòng trạng thái HTTP được trả ra bởi Server
Methods :

− AddHeader : Thiết lập tên (name) tiêu đề HTML bằng giá trò (value).
− AddHeader: Thêm hoặc thay đổi trò số trong HTTP header
− AppendToLog: Thêm text vào cổng vào nhật ký Web Server
− BinaryWrite: Gửi text lên Browser mà không cần chuyển đổi bộ
Charset.
− Clear: Hủy bỏ vùng đệm kết xuất HTML.
− End: Ngưng xử lý trang và trả ra kết quả hiện hành.
− Flush: Gửi kết quả đầu ra được đệm ngay lập tức.
− Redirect: Hướng dẫn cho Browser kết nối với 1 đòa chỉ URL khác.
− Write: Xuất một biến tới trang hiện hành như là một chuỗi.
c. Đối tượng Server
Đối tượng Server cung cấp truy cập tới các phương thức và đặc tính
(property) trên Server. Hầu hết các phương thức và đặc tính (property) Server
như là các chức năng tiện ích.
GVHD: Th.S Ninh Xuân Hương
Trang 6
Luận Văn Tốt Nghiệp
Xây dựng Website giải trí
Cú pháp : Server.property|method
Properties : ScriptTimeout : Khoảng thời gian mà một Script có thể chạy trước
khi hết thời gian (time out).
Methods :
− CreateObject : Tạo một thực thể (instance) của một đối tượng hoặc
thành phần server.
− HTMLEncode : Mã hóa chuỗi thành dạng HTML.
− MapPath : nh xạ đường dẫn ảo, đường dẫn tuyệt đối hay tương đối
trên Server hiện hành vào một đường dẫn vật lý.
− URLEncode : Mã hóa chuỗi kí tự thành dạng URL.
d. Đối tượng Session
Đối tượng Session được sử dụng để lưu trữ và tìm lại thông tin về một

User Session. Các giá trò lưu trữ trong đối tượng Session không bò loại bỏ đi khi
user di chuyển từ trang này sang trang khác trong ứng dụng, Web Server tự
động tạo ra một đối tượng Session khi một trang Web trong ứng dụng được yêu
cầu bởi một User chưa có Session. Server hủy bỏ đối tượng Session khi nó hết
thời gian hay được hủy bỏ. Thực tế, một Session chỉ thuộc về một User.
Dữ liệu Session thường gắn liền với một User, nó quản lý các thông tin về
User đang sử dụng một ứng dụng .
Cú pháp : Session.collection |property| method
Collections :
Contents Chứa các mục (item) mà bạn thêm vào Session với các lệnh Script.
Properties :
− SessionID : Trả về đònh danh Session đối với User.
− Timeout : Khoảng thời gian đối với các Sessio.
Methods :
− Abandon Hủy bỏ một đối tượng Session và giải phóng tài nguyên
của nó.
Events :
− Se_OnStart : Xảy ra khi người sử dụng đầu tiên yêu cầu một trang
trong một chương trìng.
− Se_OnEnd : Xảy ra khi Session kết thúc.
e. Đối tượng Application
GVHD: Th.S Ninh Xuân Hương
Trang 7
Luận Văn Tốt Nghiệp
Xây dựng Website giải trí
Với đối tượng Session chúng ta đã có thể thực hiện việc lưu trữ dữ liệu
chung giữa các trang trong một phiên làm việc của người sử dụng. Đối tượng
Application cung cấp phương tiện cho phép chia sẻ dữ liệu giữa các người sử
dụng khác nhau (mỗi người sử dụng này có riêng một Session) của cùng một
ứng dụng.

Như ta đã biết, ứng dụng ASP là tập hợp các trang .asp (và các thư mục con),
được cái đặt trong một Virtual Directory. Mỗi ứng dụng ASP được cung cấp
một không gian để lưu trữ các dữ liệu toàn cục của nó gọi là tầm vực
Application. Việc truy xuất vào tầm vực này do đối tượng Application quản lý
và thực hiện. Thời gian sống của tầm vực Application được tính từ khi ứng dụng
bắt đầu chạy (Web Server khởi động) cho đến khi ứng dụng bò huỷ bỏ (Web
Server stop).
Để lưu trữ một dữ liệu trong tầm vực Application, sử dụng cú pháp:
Application(“tênbiến”)=giá trò;
Việc lưu trữ và thao tác với các đối tượng dữ liệu (như mảng) trong
Application được thực hiện tương tự như đối với các biến Session.
Vì các biến trong tầm vực Application có thể được truy xuất bởi nhiều
User khác nhau, nên đối tượng Application cung cấp hai phương thức lock() và
unlock() để loại trừ tương hỗ khi truy xuất vào vùng dữ liệu dùng chung này.
 Phương thức Application.Lock(): Thực hiện khóa dữ liệu. Trong
khi một User khóa tầm vực Application, các User khác sẽ không
có khả năng cập nhật hay thay đổi trong vùng này.
 Phương thức Application.Unlock(): Được gọi để mở khóa. Khi
khóa đã mở, các User khác có thểthực hiện thao tác cập nhật dữ
liệu trong tầm vực Application.
Nhìn chung, khi một User cần thực hiện thao tác cập nhật cùng
Application, nó thực hiện các bước sau trong kòch bản:
1. Gọi Application.Lock();
2. Thực hiện các thao tác với các biến Application.
3. Gọi Application.Unlock();
Cú pháp: Application.collection | Method | Event
Collection
 Contents: Chứa tất cả các item được thêm vào ứng dụng bằng các câu
lệnh Script.
GVHD: Th.S Ninh Xuân Hương

Trang 8
Luận Văn Tốt Nghiệp
Xây dựng Website giải trí
 Staticobjects: Chứa tất cả các đối tượng được thêm vào ứng dụng bằng
tag <OBJECT>
Method
 Lock: Ngăn cản các Client khác sửa đổi thuộc tính của ứng dụng.
 Unclock: Cho pháp các Client khác được sửa đổi thuộc tính của ứng
dụng.
Events
 OnStart: Xảy ra khi 1 trang trong ứng dụng được xem đầu tiên.
 OnEnd: Xảy ra khi thoát ra khỏi ứng dụng, sau biến cố Session_onEnd.
4) Các thành phần (component) của asp.
Ngoài các đối tượng cơ bản có sẵn trong môi trường ASP, việc tạo các
trang Web động bằng ASP còn được trợ giúp nhờ một số thư viện các đối tượng
(ActiveX Component) của ActiveX Server. Các thành phần được thiết kế để
chạy trên Web Server như một ứng dụng Web cơ sở hợp thành các gói nhỏ đặc
trưng chung là động. Mỗi thành phần được sử dụng cho một công việc chuyên
biệt nhiệm cho là một thư viện các lớp (hay đối tượng), được thiết kế ở dạng
Automation Server, thực hiện một nhóm công việc chung nhất cho một thao tác
nào đó, chẳng hạn như truy xuất database, truy xuất file… vì thế người phát
triển ứng dụng Web bằng ASP khộng cần phải tạo lại các đặc tính này.
Chúng ta có thể tạo động, tương tác với các trang Web bằng cách sử dụng
các thành phần Server đã được included với Active Server Pages (ASP) trong
các đoạn Script của ta.
5) Truy xuất cơ sở dữ liệu trong ASP.
Ở phần trên chúng ta đã biết về các khái niệm tổng quát về ASP và các
thành phần cần có khi xây dựng một ứng dụng. Trong phần này sẽ trình bày kỹ
hơn về Active Data Object, đây chính là ưu điểm mạnh nhất cho việc phát triển
ứng dụng cơ sở dữ liệu trên web (Web database).

 DataBase Access Component :
Một ứng dụng Web database viết bằng ASP có thể truy xuất dữ liệu
trong môi trường database bằng cách sử dụng Component Database Access của
ActiveX hay còn gọi là thư viện ADO (Active Data Object). Đây cũng chính là
điểm mạnh nhất của ASP trong việc phát triển ứng dụng Web database.
Các Object của ADO cung cấp có thể tạo ra các kết nối (Connection) với
hầu hết các kiểu Database, cũng như việc truy xuất, cập nhất các database này.
GVHD: Th.S Ninh Xuân Hương
Trang 9
Luận Văn Tốt Nghiệp
Xây dựng Website giải trí
Hiện nay thư viện ADO là công cụ mạnh nhất trong việc phát triển các ứng
dụng database trên Internet.
Trong phần này ta sẽ xem xét các thành phần trong thư viện công cụ này.
 ADO interface :
ADO được thiết kế một cách đơn giản nhất, nó giao tiếp với database thông
qua phương thức ODBC (Open DataBase Connectivity), chúng ta có thể sử
dụng chúng với bất kỳ loại database nào nếu như ODBC có driver hỗ trợ. Hiện
nay tồn tại driver cho hầu hết các loại database như Foxpro, Access, Oracle,
SQl Server, . . .
Sự giao tiếp giữa ADO và các thành phần khác trong hệ thống có thể được
mô tả theo hình vẽ sau:
Quá trình truy xuất cơ sở dữ liệu thông qua ODBC
 Các Object trong ADO :
Các Object chính trong đó là: Connection, RecordSet và Command. Ngoài
ba Object chính này còn có các Object, tham số, thuộc tính, phương thức. Sử
dụng Connection ta có thể thiết lập sự liên kết với cơ sở dữ liệu, thông qua đó
ta có thể thực hiện các Query để lấy ra các record hoặc cập nhật một record
bằng cách sử dụng Command Object. Kết quả thực hiện các Query trên
Database sẽ được lưu vào đối tượng Recordset, trên đối tượng này ta có duyệt

và lấy ra một hay nhiều Record. Sau đây ta xem xét cụ thể cấu tạo cũng như
cách sử dụng của từng Object.
 Đối tượng Connection :
Để sử dụng tốt đối tượng Connection, trước tiên ta phải tạo ra một Instance
cho nó, đây thực sự là một thể hiện của Object này trong ASP. Phát biểu tạo
Instance cho Connection có cú pháp như sau:
GVHD: Th.S Ninh Xuân Hương
Trang 10
Luận Văn Tốt Nghiệp
Xây dựng Website giải trí
<%
Connection_name=Server.CreateObject(“ADODB.Connection”)
%>
Thông thường trong một ứng dụng nếu ta cần có một liên kết với Data
source cố đònh cho tất cả các trang thì khi đó ta sẽ đặt Instance của Connection
có tầm vực ở mức Application bằng cách đưa phát biểu tạo Instance ở trên vào
các thủ tục Application_onStar():
<%
Sub Application_onStar()
Set Connection_name = Server.CreateObject (“ADODB.Connection”)
End Sub
%>
Hoặc thiết lập tầm vực cho Connection ở mức Session như sau:
<%
Sub Session_onStar()
Set Connection_name=Server.CreateObject(“ADODB.Connection”)
End Sub
%>
Tuy nhiên ta có thể xem xét thêm việc tối ưu cho các Connection trong một
ứng dụng có nhiều User truy xuất tới database, đó là khả năng Connection

pooling.
Connection pooling :
Các ứng dụng cơ sở dữ liệu truyền thống đều tạo một mối liên kết tới
database mà nó sử dụng, còn các ứng dụng Database trên web lại mở và đóng
các liên kết này ở mỗi trang web. Một phương pháp cho các ứng dụng
Database trên web là tạo một sự liên kết liên tục với cơ sở dữ liệu của từng
User và lưu trữ trong đối tượng Session. Tuy nhiên, phương pháp này làm gia
tăng số lượng các User kết nối tới cơ sở dữ liệu mà không làm việc và nó chỉ
đạt được độ tin cậy đối với các Website có sự liên thông dữ liệu thấp (low-
traffic).
Phương pháp tiện lợi hơn trong việc quản lý các kết nối với cơ sở dữ liệu
của ứng dụng web là quản lý bằng Connection Pool của ODBC nhằm giảm bớt
số lượng liên kết rảnh rỗi. ODBC sẽ mở các kết nối và quản lý các kết nối này
mỗi khi có một yêu cầu kết nối mới thì thực hiện việc kiểm tra xem có liên kết
nào rảnh không, nếu không thì sẽ tạo kết nối mới, ngược lại sẽ lấy liên kết
GVHD: Th.S Ninh Xuân Hương
Trang 11
Luận Văn Tốt Nghiệp
Xây dựng Website giải trí
rảnh này mà không tạo liên kết mới. Nếu có một liên kết rảnh nào trong
Connection Pool tồn tại quá 60 giây thì nó sẽ tự động hủy bỏ.
Connection Pooling được kích hoạt mặc nhiên trong ASP, ta có thể loại
bỏ bằng cách thiết lập giá trò Register Entry Star Connection Pool về giá trò 0.
 Các phương thức của đối tượng connection :
• Open method : Sử dụng để mở một kết nối với Database. Sau khi tạo
một instance cho Connection Object. Ta có thể mở một kết nối với
data source để có thể truy xuất dữ liệu, cú pháp như sau:
Connection.open ConnectionString User password
Trong đó ConnectionString là chuỗi đònh nghóa tên của datasource
(DNS), tên này được khai báo trong ODBC. User và password sẽ thực

hiện việc mở Database.
• Execute method : Phương pháp này cho phép thực thi một câu lệnh,
tác động lên data source. Ta có cú pháp như sau :
Connection.Execute Commandtext.RecordAffected.options
Trong đó thông số option có các giá trò khác nhau tương ứng với mỗi
loại CommanText. Các giá trò của Option theo bảng sau:
Giá trò Danh hiệu hằng tương ứng Mô tả CommanText
0 AdCmdUnknown Giá trò này mặc đònh khi đònh nghóa
1 AdCmdText CommandText là một câu lệnh (vd: SQL)
2 AdCmdTable Tên của Table mà ta sẽ tạo một RecordSet từ đó
3 AdCmdStorû dụngPro Một Seaticored procedure trong data source
• Close method : Trong các trang ASP, sau khi đã xử lý xong dữ liệu
trên data source, trước khi kết thúc một trang sử dụng phải đóng lại
các kết nối đã mở. Việc đóng kết kết nối thực hiện nhờ phương thức
Close.
Cú pháp như sau: Connection.Close
Nếu chương trình không thực hiện việc này thì ASP sẽ tự động đóng
Connection mở trong trang. Mỗi khi người sử dụng tham khảo sang
trang khác (đi khỏi tầm vực của biến Instance). Nếu ta tạo Instance và
mở kết nối trong các thủ tục Application hoặc Session_onStar việc đóng
các Connection này sẽ được thể hiện trong thủ tục onEnd.
GVHD: Th.S Ninh Xuân Hương
Trang 12
Luận Văn Tốt Nghiệp
Xây dựng Website giải trí
 Đối tượng Command :
Thay vì phải sử dụng phương thức Execute của đối tượng Connection để
Query hay Update data resource, ta có thể sử dụng đối tượng Command dễ thi
hành các thao tác với cơ sở dữ liệu.
Việc tạo một Instance cho đối tượng Command cũng như đối tượng

Connection. Nghóa là cũng sử dụng phương thức Server.CreateObject.
Command-name=Server.CreateObhec (“ADODB.Command”)
Tuy nhiên để sử dụng đối tượng này ta cần xem xét các phương thức và
thuộc tính kèm theo.
 Các phương thức (Methods) :
• Create Paramater: Dùng để tạo một đối tượng (thông số) trong tập
thông số
• Execute: Dùng để thực thi câu lệnh được đặc tả trong thuộc tính
CommandText.
 Các thuộc tính (Properties):
• ActiveConnection :Chỉ đònh đối tượng Connection nào được sử dụng
trong đối tượng Command.
• CommandText: Chỉ đònh câu lệnh cần thực thi trên cơ sở dữ liệu .
• CommandTimeOut: Xác đònh thời gian thực thi lệnh, giá trò thời gian
thực thi được tính theo giây.
• CommandType: Cho biết kiểu của Query đặc tả trong CommandText
• Prepared : Tạo ra lệnh chuẩn bò trước khi thực thi.
 Tạo ActiveConnection :
Sau khi đã có các Instance của các Connection Object đã được kết nối với
cơ sở dữ liệu và Command Object. Lúc này nếu muốn sử dụng Command
Object ta phải gán tên của Connection thích hợp (Connection nào kết nối tới cơ
sở dữ liệu cần làm việc) vào cho thuộc tính ActiveConnection của Command
Object
Command-name.ActiveConnection = Command-name;
 Thực thi Query :
Ta có thể sử dụng phương thức Execute của Command gần giống như
Connection. Tuy nhiên điểm khác với Connection là đối tượng Command nếu
ta có dự đònh thi hành một lệnh nào thì ta phải gán động cho các giá trò thuộc
tính CommandText, Parameter, …
 Các Methods :

o Append : Thêm một thông số vào Collections.
GVHD: Th.S Ninh Xuân Hương
Trang 13
Luận Văn Tốt Nghiệp
Xây dựng Website giải trí
o Delete : Xóa một thông số trong Collections.
o Refresh : Làm tươi lại sự thay đổi thông số đó.
 Các Properties :
o Count : trả về các thông số có trong Collections.
o Item : được sử dụng để lấy giá trò của một thông số trong Collections.
o Atribute: Thể hiện kiểu dữ liệu mà thông số đó chấp nhận.
o Direction : Thể hiện hướng của thông số là Input, Output hay cả hai,
o Name : Tên thông số.
o NumberScale : Số chữ số thập phân trong thông số kiểu số.
o Size : Kích thước lớn nhất tính theo byte.
o . . . .
 Đối tượng RecordSet :
Bằng cách sử dụng các đối tượng Connection và Command ta có thể
thực thi các query để Add, Update, or Delete, . . .một Record trong Datasource.
 Các Method:
 AddNew : Là phương thức để tạo ra một Reccord.
 Close : Đóng lại đối tượng.
 Delete : Xóa đi Record hiện hành trong RecordSet.
 Move : Dòch chuyển vò trí Record hiện tại.
 Các phương thức dòch chuyển con trỏ :
MoveFirst, MoveNext, MovePrevious, MoveLast.
 Các Properties :
 AbsolutePosition: Số thứ tự hay Record hiện tại.
 BOF : Có giá trò True nếu con trỏ nằm ở Record đầu tiên.
 CursorType: Kiểu con trỏ được sử dụng trong RecordSet.

 RecordCount : Trả vể số Record trong RecordSet.
GVHD: Th.S Ninh Xuân Hương
Trang 14
Luận Văn Tốt Nghiệp
Xây dựng Website giải trí
Phần II: Tìm hiểu về Chat và Mail
Chương I: Tìm hiểu về Chat theo chuẩn IRC
Hiện nay trên Internet có nhiều loại dòch vụ, mỗi dòch vụ cung cấp cho
chúng ta một tiện ích khác nhau, trong đó có dòch vụ Chat. Đây là loại dòch vụ
cho phép mọi người trên khắp hành tinh có thể gặp gỡ, trao đổi thông tin với
nhau mà không cần phải gặp nhau trực tiếp. Dòch vụ này rất phát triển, có đến
hàng triệu người trên thế giới đang sử dụng dòch vụ này. Vì vậy vấn đề đặt ra
là phải có một quy đònh chung cho hệ thống mạng IRC (Internet Relay Chat).
Ủy Ban IAB về các giao thức chuẩn (IAB Official Protocol Standards) đã đưa
ra một giao thức chuẩn (Standard protocol) dùng cho tất cả các chương trình
chat đang tồn tại. Đó là IRC (Internet Relay Chat) protocol được đònh nghóa
trong RFC (Request For Comment) 1459, 2810, 1324, 2811, 2813.
IRC Protocol được đưa ra vào năm 1980, tiền thân của nó, dùng cho các
thành viên trong mạng BBS trao đổi thông tin với nhau, dần dần được cải tiến
và trở thành giao thức chuẩn cho các chương trình IRC. Quy mô của IRC
protocol là trên toàn cầu, gồm có 2 thành phần Client và Server.
Hiện nay IRC Protocol được xây dựng trên họ giao thức mạng phổ biến
nhất là TCP/IP (TCP/IP Net Work Protocol) lý do việc sử dụng họ giao thức
này là tính chính xác, tin cậy, phổ biến, rất thích hợp cho các cuộc thảo luận từ
xa.
IRC Protocol dùng mô hình Client–Server, vì thế chúng ta có thể chạy
nhiều máy trên môi trường phân tán (distributed enviroment). Trong đó máy
đóng vai trò là Server cung cấp một điểm tập trung (central point) cho các
Client kết nối đến, và đồng thời thực hiện quá trình truyền nhận message từ
các Client này đến các Client khác.

I) Một số khái niệm cơ bản.
1. Servers:
Server được xem là xương sống của mạng IRC, mỗi Server là một tâm
điểm trong hệ thống các Server, chúng cho phép Client và Server khác kết nối
vào. Những Server này được kết nối theo biểu đồ hình cây (Spanning Tree).
2. Clients
Client là một máy tính mà nó được kết nối đến Server và máy tính đó
không phải là Server.
GVHD: Th.S Ninh Xuân Hương
Trang 15
Luận Văn Tốt Nghiệp
Xây dựng Website giải trí
Client là thiết bò đầu cuối nó không chuyển tiếp message cho bất cứ máy
tính nào khác
Mỗi Client được phân biệt với nhau thông qua Nickname (Nickname là
chuỗi có giá trò tối đa 9 ký tự ). Server dùng Nickname để quản lý các Client.
Khi có sự tham gia của một Client vào hệ thống, tất cả các Server phải
có thông tin về Client đó như là tên Client (Hostname), tên Server mà nó kết
nối đến v.v
Operators:
Để có thể quản lý số lượng User tham gia trên mạng (IRC network)
người ta xây dựng một nhóm User gọi là “Client Operator” nhóm này có đầy
đủ mọi quyền hạn trên mạng (IRC network). Mặc dù quyền hạn (cấp cho
Client Operation) có thể được xem là “nguy hiểm”, nhóm “Client Operator” có
thể thực hiện các tác vụ như hủy bỏ kết nối (disconnecting) của một Client nào
đó hoặc tái kết nối (reconnecting) đến Server nào đó. Những tác vụ này có thể
thực hiện khi có một Server bò hỏng hay khi có sự cố về đường truyền và nhiều
nguyên nhân khác. Chính vì khả năng đó nên người ta cho rằng nhóm “Client
Operator” có thể nguy hiểm. vì có thể nhóm Client này hủy bỏ kết nối của một
Client khác mà không có lý do hợp lý, hay mục đích chính đáng.

3. Channels
Channel là tên nhóm một hay nhiều client, mà những client này sẽ cùng
được nhận các message gởi đến channel đó, nói cách khác là các client thuộc
về một channel sẽ nhận được message gởi đến channel đó. Những client trong
cùng một channel mới có thể nhận thấy nhau.
Một channel được ngầm tạo ra khi có client đầu tiên tham gia và kết
thúc khi client cuối cùng ngưng kết nối. Trong khi channel đang tồn tại thì
client có thể tham gia vào channel đó bằng cách dùng tên channel.
Tên của channel có thể lên đến 200 ký tự và bắt đầu bằng ký tự ‘&’
hoặc ký tự ‘#’, Tên channel không có ký tự khoảng trắng (‘ ‘), Ctr+G(^G or
ASCII 7), dấu phẩy (‘,’ ).
Để có thể tạo ra một channel hay là tham gia vào một channel có sẵn
client phải gởi JOIN message để tham gia vào channel đó.
Channels operation :
Channel oprerator còn được gọi là “chop” hoặc “chanop”. Khi có một
user tạo ra channel thì mặc nhiên user đó trở thành channel operator, là người
sở hữu channel user (channel operator) có đầy đủ mọi quyền hạn trên channel
GVHD: Th.S Ninh Xuân Hương
Trang 16
Luận Văn Tốt Nghiệp
Xây dựng Website giải trí
đó. Để quản lý các client channel operator có thể thực hiện quyền của mình
như :
 KICH - đẩy một client ra khỏi channel
 MODE - thay đổi mode của channel
 INVITE - gọi một client tham gia vào channel mà nó đang ở
trạng thái invite-only (mode i+).
 TOPIC - thay đổi topic channel, channel này đang ở trạng
thái +t(mode +t).
Ngoài ra channel operator có thể cấp quyền cho client khác hay nhường

quyền channel operator lại. Tuy nhiên quyền hạn này không được chính xác vì
những nguyên nhân đã được trình bài phần trên.
Một channel operation thì được nhận dạng bởi ký tự bắt đầu “@” tiếp
theo là nickname (nick name của user tạo ra channel đó). Ví dụ @HappyMan
II) Những quy đònh trong IRC.
Dạng chung của thông điệp.
Thông điệp thường có 2 dạng:
Các thông điệp xuất phát từ lệnh (thông điệp được phát sinh từ một
lệnh): là thông điệp được client gửi lên server để yêu cầu một mục đích nào đó
(ví dụ như hỏi thông tin một nick nào đó, hay hỏi thông tin các channel, hoặc
chỉ đơn giản là muốn gửi thông điệp cần nói trên channel…). Các thông điệp
này có thể không còn nguyên thủy như khi user gõ vào, mà chúng được gắn
thêm prefix (đòa chỉ host, nickname của user gửi).
Thông điệp trả về: là thông điệp được server gửi về client để trả lời lại
các yêu cầu của client.
Các thông điệp có hai dạng: thông điệp bằng chữ và thông điệp bằng số.
2. Message
Message là thông điệp từ client gởi cho server hoặc ngược lại, nếu trong
message chứa lệnh (lệnh này sẽ được mô tả phần sau), thì những lệnh này sẽ
được đáp lại bằng thông điệp phản hồi (reply message).
Mỗi message gồm có 3 phần chính: phần đầu còn gọi là tiếp đầu ngữ
(prefix), tiếp theo đó là phần lệnh (command) và cuối cùng là danh sách đối
số(parameters list), mỗi phần cách nhau bởi ký tự khoảng trắng (ASCII 0x20).
Bắt đầu prefix là ký tự “:” (ASCII 0x3b) chính nhờ vào ký tự này mà server
GVHD: Th.S Ninh Xuân Hương
Trang 17
Luận Văn Tốt Nghiệp
Xây dựng Website giải trí
nhận biết chính xác phần lệnh (command), những cú pháp lệnh sẽ được mô tả
chi tiết trong phần đònh dạng message (format message).

Nếu message từ client gởi đến mà không nhận thấy phần đầu (prefix) thì
server xem như message đó được gởi từ client mà nó kết nối trực tiếp, vì thế
các client muốn gởi message đến server mà nó kết nối trực tiếp không nên
dùng phần prefix, nếu sử dụng cần phải sử dụng chính xác vì nếu prefix không
đúng thì server không đáp lại mà nó im lặng.
Phần lệnh (command) là những thành phần thuộc về IRC (được mô tả
chi tiết trong phần message detail), chiều dài lệnh và danh sách đối số cho
phép là 510 ký tự, cuối mỗi message có ký tự kết thúc (CR-LF) như thế tổng
chiều dài chúng là 512 ký tự.
 Đònh dạng một message
Vấn đề đặt ra là làm sao có thể nhận dạng và phân tích ra từ những
luồng tuần tự các message gởi đến, để giải quyết vấn đề này người ta lập ra
quy đònh cho message.
Như đã mô tả ở phần trên, một message luôn cóù ký tự kết thúc nhờ vào
ký tự này mà server có thể tách message ra khỏi luồng (stream). Sau khi tách
ra chúng được phân tích thành 3 thành phần chính. chúng ta sẽ khảo sát chúng
trong phần sau. Bây giờ chúng ta phân tích cấu trúc tổng quát cho một
message:
Giải thích cú pháp:
 Đối tượng nằm trong dấu [ ] có thể có hoặc không có.
 Đối tượng nằm trong dấu < > là bắt buột phải có.
 Toán tử ‘ | ’ là có khả năng chọn một trong hai ví dụ: “<a> | <b>” có
thể chọn <a> hoặc chọn <b>.
 Đối tượng nằm trong dấu {} có thể xuất hiện nhiều lần.

3 thành phần chính của message:
Phần đầu (prefix)
Phần prefix có thể không có, bắt đầu prefix phải có dấu ‘:’ :
<prefix> ::=<servername > | <nick> [‘!’ <user> ][‘@’ <host> ]
GVHD: Th.S Ninh Xuân Hương

Trang 18
[‘:’<prefix><SPACE>] <command> <SPACE> <params> <cr-lf>

Phần đầu(prefix) Lệnh DS đối số ký tự kết thúc
Luận Văn Tốt Nghiệp
Xây dựng Website giải trí
Ở đây chúng ta có thể thấy prefix có thể là servername hoặc nickname
ngoài ra còn có thể có thêm username hay hostname hoặc cả hai. Nhưng đối
với username phải có ký tự ‘!’ đứng trước, tương tự như thế hostname phải có
ký tự ‘@’đứng đầu.
Phần Lệnh (command)
Phần lệnh có thể ở dạng chuỗi hoặc số :
<command> ::=<letter> {<letter>} | <number> <number> <number>
dễ dàng chúng ta có thể nhận thấy lệnh có thể do một hay nhiều ký tự hoặc giá
trò số gồm 3 chữ số.
Phần danh sách đối số (parameters list)
<params> ::=<SPACE> [‘:’ <trailing> | <middle> <params>]
Chúng ta thấy đối số có thể không xuất hiện, giải thích thêm về
<trailing><middle>
<trailing> là chuỗi ký tự đại diện trong đó không có ký tự NULL hoặc CR, LF.
Chuỗi này được đặt giữa hai ký tự “* * ”
<middle> cũng là chuỗi đại diện nhưng có sự phân biệt, ký tự đầu chuỗi không
được là ký tự ‘:’(ASCII 0x3b).
Ví dụ: “* !* “ đại diện cho tất cả các user.
“*@* “ đại diện cho tất cả host name.
“*.edu “ đại diện cho nhóm server có phần cuối là edu.
3. Giá trò số trả về (numeric replies)
Sau khi khảo sát về cấu trúc của một message, chúng ta được biết một
message được nhận dạng như thế nào. Sau khi nhận được message, server sẽ
phát ra message phản hồi (repply message). Reply Message được hiểu tương tự

như là message, thật sự nó gồm 3 phần: sender prefix, giá trò số gồm 3 chữ số
và target.
 sender prefix là nickname của client gởi.
 giá trò số được mô tả phần sau.
 <taget> ::= <channel> | <user> ‘@’ <servername> | <nick> | <mask> [
“,” <taget>] để nhận biết reply message đến client nào chúng dựa vào
<target>.
Ở đây chúng ta có 2 loại message phản hồi:
error reply
normal reply
Lưu ý: chỉ có server mới có khả năng phát ra reply message.
GVHD: Th.S Ninh Xuân Hương
Trang 19
Luận Văn Tốt Nghiệp
Xây dựng Website giải trí
III. Chi tiết cho từng message (Message detail)
Đây là phần mô tả chính cho mỗi loại message, để sever và client có thể
nhận biết chúng. Server sẽ nhận message và phân tích chúng, sau đó trả lại
thông báo thích hợp. Nếu phân tích message mà gặp phải lỗi (error). Khi đó
server phải có cơ chế thông báo cho client.
Một lỗi (error) sinh ra thường do những nguyên nhân sau:
 Sai đối số (incorrect parameter).
 Sai Lệnh(incorrect command).
 Sai đòa chỉ đích Tên server
NickName
Channel name
 Sai vì vi phạm quyền hạn v.v…
Cú pháp cho một command message
Chú ý: Đối với “Name”, đó là tên của client gởi. Một server (từ xa)
được client gởi message đến thì server sẽ căn cứ vào “Name”, để có thể đáp

lại yêu cầu ngược lại nếu client gởi đến server mà nó kết nối trực tiếp không
cần.
1. Nhóm message đăng ký kết nối
Nhóm message đăng ký kết nối chòu trách nhiệm kết nối với IRC server.
Trong nhóm message này có 3 loại message:
 Message do server sử dụng.
 Message do client sử dụng.
 Message dùng chung.
1.1 Message do Server sử dụng
 Server Message
Cú Pháp: SERVER <servername><hopcount><info>
Server message dùng để thông báo cho các server khác trên toàn hệ
thống biết, có thêm một server kết nối vào hệ thống mạng (IRC network).
Những thông tin về server này được chuyển cho các server khác trên mạng
chứa trong đối số <info>. Sự kiện này xảy ra khi có một server mới kết nối vào
hệ thống mạng. Lúc đó server (mới kết nối vào) phát ra SERVER message,
message này được phát quảng bá (broadcast) lên mạng.
GVHD: Th.S Ninh Xuân Hương
Trang 20
:Name COMMAND parameter list
Luận Văn Tốt Nghiệp
Xây dựng Website giải trí
Lưu ý SERVER message khi gởi đến phải được chấp nhận bởi Server có
tên là đối số <servername>.
Giải thích: vì chúng ta biết rằng khi có một server tham gia vào hệ thống
thì các server khác phải có thông tin về server đó để chúng cập nhật lại cấu
hình mạng, như thế thông tin này phải thông báo cho các server khác. Message
này được gởi cho từng server.
 Server Quit Message
Cú Pháp: SQUIT <server><comment>

SQUIT message được dùng khi server muốn thoát khỏi hệ thống mạng.
Message này cũng là hành động của operator giúp giữ cho hệ thống mạng gọn
hơn (orderly fashion), hoặc loại bỏ server ra khỏi hệ thống nếu nó bò treo
(deal). Operator có thể dùng SQUIT message cho các server ở xa trong tình
trạng này các server còn lại phải phân tích SQUIT message này để cập nhật lại
thông tin về hệ thống mạng (IRC Network). <comment> lí do việc tách khỏi hệ
thống, comment được operator đưa ra.
1.2 Message Client sử dụng
 Operator message
Cú Pháp: OPRE <user><password>
Người dùng thông thường sử dụng dòng lệnh này để tranh quyền làm
operator. Tuy nhiên, nếu server không cấu hình cho phép kết nối từ một client
được phép tự thiết lập quyền làm operator khi gia nhập channel thì dòng lệnh
này không có tác dụng (khi đó server sẽ trả về lỗi ERR_NOOPERHOST cho
user).
Khi lệnh OPER thành công, server sẽ trả về cho user đó một thông điệp
như khi sử dụng lệnh MODE đặt trạng thái operator cho người dùng.
 Quit message
Cú Pháp: QUIT [<Quit message>]
Một client muốn thoát ra hệ thống mạng nó phát ra QUIT message đến
server mà nó kết nối trực tiếp server khi nhận được message này nó sẽ đóng
kết nối với client đó. Đồng thời thông báo cho server khác để các server này
thông báo cho các client trong cùng channel.
1.3 Nhóm message dùng chung
 Pass message
Cú pháp : PASS < password>
Đối với Server:
GVHD: Th.S Ninh Xuân Hương
Trang 21
Luận Văn Tốt Nghiệp

Xây dựng Website giải trí
Server dùng pass message để thiết lập password cho mình, bằng cách
dùng password server ngăn không cho sự xâm nhập bất hợp pháp của các client
khác. Server dùng pass message (có cung cấp password) trước khi server phát
ra message SERVER (message này gúp cho server đònh danh trên mạng). Sau
khi phát ra pass message server có thể đăng ký kết nối (connection register).
Đối với Client :
Client dùng pass message để thiết lập password cho nickname mà nó
muốn đăng ký, nói cách khác. Password được dùng để không cho người khác sử
dụng nickname của mình. Tất nhiên, việc thiết lập password là không cần thiết,
nếu như chúng ta không cần bảo vệ nickname của mình. Tuy nhiên đối với
nhóm channel operator là cần thiết. Cũng giống như server, client phải đưa ra
PASS message trước khi đăng ký kết nối (bằng cách gởi NICK/USER
message).
Lưu ý : PASS message có thể được gởi nhiều lần. Nhưng chỉ có lần cuối
cùng gởi mới được xác nhận password và xem đó là password chính thức.
 NickMessage
 Cú pháp: NICK <nickname>[<hopcount>]
Đối với Server:
Server dùng NICK message để thông báo vò trí của <nickname> cho các
server khác, khi sever dùng NICK message đối số <hopcount> phải được đưa
vào, (hopcount là số server phải đi qua để đến được đích). Nếu một package
được chuyển trên mạng khi đi qua một server nó rừ đi hopcount một đơn vò cho
đến khi hopcount bằng 0 thì đến đích.
Đối với Client:
Client dùng NICK message để xác đònh nickname cho mình hoặc thay
đổi nickname của mình. Nếu NICK message dùng cho client không cần đối số
<hopcount>. Trong trường hợp có xuất hiện đối số <hopcount> thì nó sẽ bò bỏ
qua.
Nếu NICK message từ client đến server, mà server đó đã có thông tin

về nickname (nickname đã đăng ký) đó, thì hiện tượng cạnh tranh (Nickname
Collision) xảy ra. Vì chúng ta được biết nickname phải là tên duy nhất không
cho phép trùng. Kết quả là tất cả thông tin về nickname đó sẽ bò hủy bỏ khỏi
cơ sở dữ liệu trong server (client kết nối) và một KILL message được phát ra
để hủy bỏ nickname đó ra khỏi cơ sỡ dữ liệu của các server còn lại. Nếu server
nhận được nickname từ client (kết nối trực tiếp vào server) mà nickname này
bò trùng với một nickname hiện có trong server, thì nó sẽ phát ra thông báo lỗi
ERR_NICKCOLLISION. Sau đó hủy bỏ NICK message và không phát ra
GVHD: Th.S Ninh Xuân Hương
Trang 22
Luận Văn Tốt Nghiệp
Xây dựng Website giải trí
KILL message. Như thế một client khi đưa ra nickname không thích hợp thì
client đó không thể đăng ký kết nối với server đồng thời không ảnh hưởng đến
các client khác.
 User Message
Cú pháp: USER <username><hostname><servername><realname>
Đối với Server:
Server dùng USER message để thông báo cho các server khác có user
mới tham gia vào mạng (IRC network). Đồng thời nó cũng cung cấp cho các
thông tin như <username>, <hostname>, <servername>, <realname>. Khi gởi
USER message cho các server khác thì client sẽ gắn nickname vào trước
message đó. Căn cứ vào nickname này, server sẽ nhận biết được thông tin
thuộc về nickname nào. Nhưng có một điều lưu ý là server dùng USER
message, sau khi nó nhận được NICK message và USER message từ client
muốn kết nối vào hệ thống mạng. Điều này có nghóa là client gởi NICK
message thành công, tiếp đó là USER message được gởi đến server. Khi đó
server sẽ phát ra USER message.
Đối với Client:
Sau khi đăng ký nickname thành công, client phát ra USER message để

cung cấp thông tin cho server, thông tin mà nó cung cấp là <username>,
<hostname>, <servername>, <realname>.
Tuy nhiên có một số điều lưu ý là: hai đối số <hostname> và
<servername> bò bỏ đi nếu là client kết nối trực tiếp đến server. Vì lý do bảo
mật trên mạng (security reasons). Và điều lưu ý thứ hai là đối số <realname>
phải đứng sau cùng. Vì trong <realname> có thể có ký tự khoảng trắng và ký tự
đầu tiên là dấu ‘:’.
2. Nhóm message dùng cho việc điều khiển Channel
2.1 Join message
Cú Pháp: JOIN <channel>{,<channel>} [<key>][,<key>]
Để có thể tham gia vào channel client phải phát ra JOIN message,
server kiểm tra message này nếu cung cấp đúng channel thì cho phép gia nhập
vào channel. Ngoài ra server còn kiểm tra client đó có bò trạng thái “active
bans”, (đây là trạng thái mà client đó bò cấm quyền kết nối người cấm quyền
chính là channel opertor) nếu gặp trạng thái này server không cho gia nhập.
Điều kiện để một client có thể tham gia vào channel:
GVHD: Th.S Ninh Xuân Hương
Trang 23
Luận Văn Tốt Nghiệp
Xây dựng Website giải trí
- User phải được mời (invite) nếu channel đó đang ở trạng thái invite-
only(mode +i). Nickname, username, hostname của user phải không
ở vào trạng thái “active bans” (trạng thái cấm tham gia).
- Phải cung cấp đúng password và nickname nếu có thiết lập password
cho nickname.
- Kể từ khi client JOIN thành công chúng sẽ nhận được thông báo, và
có thể dùng các command để liên lạc với server của chúng bao gồm:
MODE, KICK, PART, QUIT và quan trọng nhất là
PRIVMSG/NOTICE message.
- JOIN message cũng cần phải được phát quảng bá (broadcast) lên

mạng để các server có được thông tin về client mới tham gia, nhờ
vào thông tin này các server có thể tìm thấy client đó.
2.2 part message
Cú pháp: PART <channel>{,<channel>}
Client dùng part message để thoát khỏi channel
2.3 Mode message
MODE message phục vụ 2 mục đích trong IRC, nó cho phép user và
channel thay đổi mode của mình.
 Channel mode
Cú pháp: MODE <channel>{[ + | - ]| o | p | s | i | t | n | b | v } [<limit>]
[<user>][<banmask>]
Trong trường hợp này MODE dùng thay đổi trạng thái channel chỉ có
nhóm channel operator mới có quyền sử dụng command này.
Các giá trò mode:
o - lấy quyền channel operation.
p - cờ private.
s - cờ secret.
i - cờ thông báo channel ở trạng thái invite.
b - thiết lập user ban mask.
 User mode
Cú pháp : MODE <nickname>{[+ | - ]| i | w | s | o |}
MODE trong trường hợp này dùng cho user.
Một user MODE chỉ có thể được chấp nhận nếu nickname người gởi và
đối số <nickname> phải giống nhau.
GVHD: Th.S Ninh Xuân Hương
Trang 24
Luận Văn Tốt Nghiệp
Xây dựng Website giải trí
Lưu ý: một channel operator có thể tự giáng cấp (deopping) của mình
bằng cách đưa ra mode -o

2.4 Topic message
Cú Pháp: TOPIC <channel>[<topic>]
Topic message dùng thay đổi hoặc xem chủ đề của channel. Nếu đối số
<channel> được đưa vào lệnh TOPIC message sẽ thay đổi topic cho channel
đó, trong trường hợp nó đang ở chế độ cho phép user thay đổi.
2.5 Names message
Cú pháp: NAMES [<channel>]{,<channel>}
Bằng cách sử dụng NAMES message. User có thể xem danh sách tất cả
nickname có thể thấy được (visible) trên channel, đối số <channel> được dùng
đối với trường hợp này không phải là channel private (mode+p) hoặc secret
(mode +s), vì hai mode này không cho phép user truy xuất. Nếu có cung cấp
đối số <channel> thì nó sẽ trả về danh sách nickname của channel đó, không
có thông báo lỗi được trả về nếu sai channelname. Nếu trường hợp không có
đối số <channel> thì nó sẽ trả về danh sách tất cả các channel và nickname
(trong các channel đó).
2.6 List message
Cú Pháp: LIST [<channel>{,<channel>}[<server>]]
LIST message dùng để client liệt kê danh sách các channel và topic của
chúng. Nếu đối số <channel> không được cung cấp thì nó sẽ liệt kê các
channel mà client đang tham gia. Đối với Private và secret channel chúng vẫn
được liệt kê nhưng không hiển thò chủ đề.
2.7 Invite message
Cú Pháp: INVITE <nickname><channel>
INVITE message được dùng để mời/gọi user tham gia vào channel, đối
số <nickname> là nickname của user được mời/gọi. Tuy nhiên không có sự đòi
hỏi user phải tham gia vào channel. User được mời phải nằm trong channel ở
chế độ +i (invite-only).
2.8 Kick message
Cú pháp: KICK <channel><user>[<comment>]
KICK command dùng để loại bỏ user ra khỏi channel. Chỉ có channel

operator mới có quyền dùng lệnh KICK, mỗi server nhận được KICK message
GVHD: Th.S Ninh Xuân Hương
Trang 25

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×