Đề tài Xây dựng dịch vụ Chat trên mạng

CHƯƠNG I: TỔNG QUAN VỀ INTERNET I- Kiến trúc mạng máy tính 7 1. Kiến trúc mạng: 7 2. Mô hình mạng ISO . 7 II- Tổng quan về Internet . 9 1. Internet bắt nguồn từ đâu? 10 2. Giao thức là gì? 10 3. Giao thức TCP/IP 11 Bộ protocol TCP/IP . 12 Mô hình kết nối theo giao thức TCP/IP 13 Phân loại địa chỉ IP 14 4. Các dịch vụ kết nối đến Internet . 15 Dịch vụ trực tuyến(online service) . 15 Nhà cung cấp dịch vụ Internet(ISP) . 15 Truy nhập trực tuyến(direct access) . 15 III- Tổng quan một số dịch vụ thông dụng trên mạng 15 1. Dịch vụ Chat . 15 2. Đăng nhập từ xa Telnet . 15 3. Archie (tìm kiếm tập tin) 16 4. Tìm kiếm thông tin theo chỉ số WAIS . 16 5. Gopher 16 6. Dịch vụ Thư Điện Tử (E-mail) . 16 7. Dịch vụ World Wide Web hay còn gọi là Web . 18 8. Dịch vụ tên miền (Domain Name System - DNS) . 20 9. Dịch vụ nhóm tin (Use Net News Groups) 21 10. Dịch vụ FTP (File Transfer Protocol) . 22 11. Internet Phone 22 Tóm tắt chương I . 23 CHƯƠNG II: TÌM HIỂU VỀ INTERNET RELAY CHAT Giới thiệu tổng quan về IRC . 25 I. Một số khái niệm cơ bản 26 1 Servers . 26 2 Clients 26 3 Channels 27 II. Những quy định trong IRC . 27 1 Dạng chung của thông điệp . 27 2 Message 28 3.Giá trị số trả về (numeric replies) 29 III. Chi tiết từng message (message detail) . 29 1.Nhóm message đăng ký kết nối . 30 Message do server sử dụng . 32 1.1 Server Message 32 1.2 Server Quit Message . 32 Message do client sử dụng 32 1.3 Operator message 32 1.4 Quit message . 32 Nhóm message dùng chung . 32 1.5 Pass message . 32 1.6.Nick Message 33 1.7 User Message . 33 2.Nhóm message dùng cho việc điều khiển Channel . 33 2 .1 Join message . 33 2.2 Part message 33 2.3.Mode message . 33 2.3.1 Channel mode 33 2.3.2 User mode 33 2.4 Topic message 34 2.5 Names message 34 2.6 List message 34 2.7.Invite message 34 2.8. Kick message . 34 3.Nhóm message truy vấn đến server (server query and command) 34 3.1 Version message . 34 3.2 Stats message . 34 3.3 Link message . 34 3.4 Time message 34 3.5 Connect message 34 3.6 Trace message . 34 3.7 Admin message . 35 3.8 Info message 35 4.Nhóm message gởi text (sending message) . 35 4.1 Private message 35 4.2 Notice message 35 5.Nhóm message do client truy vấn đến server (user –based query) 35 5.1 Who Query 35 5.2 Who is Query 35 5.3 Who was message . 35 6 .Nhóm message khác . 35 6.1.Kill message 35 6.2.Ping message . 36 6.3.Pong message 36 6.4 Error message 36 7 Nhóm message tuỳ chọn (option message) 36 7.1 Away message . 36 7.2.Rehast message . 36 7.3 Restart message . 36 7.4 Summon message 36 7.5. Users message 36 7.6 Operwall message 36 7.7. Userhost message 36 7.8 Ison message . 36 CHƯƠNG III: MỘT SỐ DỊCH VỤ CHAT TRÊN MẠNG I- Chat-Tán gẫu trên mạng 39 II- Dịch vụ Chat IRC(Internet Relay Chat) . 39 1. Giới thiệu về hoạt động của IRC . 39 2. Cách sử dụng 39 IRC server 40 Port . 40 3. Một số công cụ khi thực hiện Chat Mirc 40 Chat chốn đông người 40 Tìm hiểu về người bạn cùng chat . 41 Chat riêng tư 41 Kết nối trực tiếp 41 III- Dịch vụ Yahoo!Messenger . 41 1. Giới thiệu 41 2. Chat trong Yahoo!Messenger 43 IV- Dịch vụ AOL INSTANT MESSENGER(AIM) 44 1. Giới thiệu về AIM . 44 2. Cách sử dụng 45 3. Một số tính năng của AOL Instant Messenger 47 Tìm hiểu về tính năng Instant Message . 47 Tính năng Buddy List 47 Thông báo Away và Idle . 47 Trao đổi tập tin . 47 Đặc tính Image 48 Chat trong AOL Instant Messenger 48 V- MobiChat- Chat qua điện thoại di động . 48 VI- Một số dịch vụ chat thông dụng khác . 49 Tóm tắt chương III . 50 CHƯƠNG IV- GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH JAVA I- Giới thiệu ngôn ngữ Java . 52 II- Ưu điểm và nhược điểm của Java . 53 1. Ưu điểm của Java 53 2. Nhược điểm của Java 55 3. Hoạt động của Java . 55 III- Cơ chế truyền nhận trong Java 56 1. Các kiến thức cơ bản về Networking 56 TCP 57 UDP . 57 Port 59 2. Networking: 59 2.1. Giao tiếp giữa phần hiện thực client và Browser ở máy local: 60a. URLs . 60 2.2. Sockets 62 b. Sử dụng Socket ở Client . 62 c. Sử dụng Socket ở Server 64 d. Lớp Socket . 65 e. Java Security . 67 2.3. Threads, Synchronization và Exceptions . 67 a. Multithread 67 b. Synchronization (xử lý crictical section) . 69 c. Exceptions 70 3. Cơ Sở Dữ Liệu 70 . 3.1. JDBC 70 a. JDBC là gì ? 70 b. Cấu trúc JDBC . 71 3.2. ODBC và JDBC 72 3.3. Sử dụng JDBC driver 72 3.4. Sử dụng JDBC để truy xuất Cơ sở dữ liệu 73 a. Kết Nối Tới Cơ sở dữ liệu: 73 b.Truy xuất Cơ sở dữ liệu trong java . 73 c. Ðối Tượng ResultSet . 74 d. Ðối Tượng ResultSetMetaData: 75 e. Ðối Tượng DatabaseMetaData: . 75 f. Lấy Thông Tin Trên Table 75 Tóm tắt chương IV 77 Tài liệu tham khảo . 82

doc112 trang | Chia sẻ: lvcdongnoi | Lượt xem: 3232 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Đề tài Xây dựng dịch vụ Chat trên mạng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
cơ sở dữ liệu, ta phải tạo ra một đối tượng của lớp Connection, và cơ sở dữ liệu sử dụng cú pháp URL: String url="jdbc:odbc:Subname"); Connection conn=create.getConnection(url); Subname chính là Data Source name mà ta đăng ký trong Control Panel.Cú pháp URL có thể biến đổi hoàn toàn cho các kiểu khác của cơ sở dữ liệu. jdbc.Subprotocol.Subname Những chữ đầu tiên minh họa cho protocol kết nối và luôn luôn là jdbc. Subprotocol ở đây được ghi rõ là odbc. Nó định nghĩa cơ chế kết nối cho một lớp cơ sở dữ liệu. Nếu ta kết nối tới một Server cơ sở dữ liệu trên một máy khác, ta có thể ghi rõ tên máy, Subprotocol đó cũng như UserName, password như một phần của chuỗi Connection. b. Truy xuất Cơ sở dữ liệu trong java: Một khi đã kết nối được tới cơ sở dữ liệu, điều ta đòi hỏi là các thông tin tên bảng, tên cột, nội dung của các cột, và ta có thể chạy SQL mà không cần phải truy vấn đến cơ sở dữ liệu, hoặc thêm vào, hoặc sửa chữa lại nội dung của nó. Các đối tượng mà ta có thể sử dụng để thu được các thông tin từ cơ sở dữ liệu là:       ¨DatabaseMetaData: thông tin đầy đủ về cơ sở dữ liệu: tên bảng, tên các chỉ mục của bảng, tên sản phẩm cơ sở dữ liệu, version và các hoạt động được cung cấp bởi cơ sở dữ liệu. ¨ ResultSet: thông tin về một bảng hay kết quả của một truy vấn. Ta có thể truy xuất tới hàng dữ liệu bởi một hàng, nhưng có thể truy xuất tới các cột bằng nhiều cách khác. ¨ResultSetMetaData: thông tin về một tên cột, các kiểu của cột trong đối tượng ResultSet. Trong khi mỗi đối tượng này có một số lượng lớn các phương thức hướng dẫn ta lấy được các thông tin chi tiết chính về các phần tử của cơ sở dữ liệu. Có một vài phương thức chính trong mỗi đối tượng này cho ta những thông tin đầy ý nghĩa về cơ sở dữ liệu của ta. c. Ðối Tượng ResultSet: Ðối tượng ResultSet là một đối tượng rất quan trọng trong JDBC. Nó là một sự trừu tượng hóa rất cần thiết của một bảng được tổ chức về chiều rộng và có chiều dài không được biết trước. Hầu như tất cả các phương thức, kết quả của các truy vấn đều trả về dữ liệu như một ResultSet. Nó liên quan đến số tên cột mà ta có thể truy vấn bởi tên. Nó còn gồm cả tên của các hàng mà ta có thể di chuyển suốt từ trên xuống dưới của dãy trong một lần. Trước khi dùng ResultSet, ta cần phải biết xem có bao nhiêu cột liên quan đến. Thông tin này được cất trong đối tượng ResultSetMetaData. ResultSet results; ResultSetMetaData rsmd; rsmd=results.getMetaData(); numcols=rsmd.getColumnCount(); Khi ta thu được một ResultSet, nó chỉ tới hàng đầu tiên. Ta sử dụng phương thức next() để thu thêm các hàng còn lại, và phương thức trả về False khi không còn hàng nào nữa. Từ khi đem dữ liệu từ một cơ sở dữ liệu, có thể, nó sẽ phát ra những biệt lệ. Ta phải luôn đặt hàm lấy kết quả trong một khối try try { rsmd= results.getMetaData(); //lấy dữ liệu từ kho MetaData ResultSetMetaData rsmd=results.getMetaData(); int numCols=rsmd.getColumnCount();//tạo biến đếm số cột boolean more=results.next(); //tạo biến cho biết cột đã hết chưa. while(more) for(j=1;j<=numcols;j++) { System.out.print(results.getString(j)); System.out.println(); more=results.next(); } results.close(); } catch(Exception e) } System.out.println(e.getMessage()) ; }         Các bước của chương trình: - Lấy dữ liệu từ kho MetaData. - Ðếm số cột bằng phương thức getColumnCount() trong ResultSetMetaData. - Tạo biến đối tượng xem xét số cột đã hết chưa (true : còn, false : hết). - Trong khi còn các cột: - Tạo vòng lặp đếm số cột. - Lấy giá trị tại cột thứ j. - Gọi tiếp phương thức next() cho các cột còn lại. - Ðóng đối tượng results - Bắt biệt lệ hết cột xảy ra. - Trả dữ liệu về kho ResultSetMetaData. Ta có thể thu được dữ liệu trong ResultSet theo nhiều dạng, phụ thuộc vào kiểu dữ liệu được cất trong mỗi cột. Do đó, ta có thể thu được nội dung của cột mà không cần biết đến số cột hay tên cột. Chú ý rằng số cột bắt đầu là một (1), không phải là không (0). Một vài phương thức minh họa cho đối tượng ResulSet sau:    ¨getInt(int): trả về nội dung của cột được đánh số như là một số integer. ¨getInt(String): Trả về nội dung của cột được đặt tên như là một số integer.  ¨getFloat(int): Trả về nội dung của cột được đánh số như là một số float. ¨getFloat(String): Trả về nội dung của cột được đặt tên như là một số float. ¨getDate(int): Trả về ngày tạo lập của cột được đánh số.   ¨getDate(String): Trả về ngày tạo lập của cột được đặt tên. ¨next(): Chuyển con trỏ tới hàng kế tiếp và trả về false khi hết hàng. ¨close(): Ðóng đối tượng ResultSet. d. Ðối Tượng ResultSetMetaData: Ta thu được đối tượng ResultSetMetaData từ đối tượng ResulSet khi sử dụng phương thức getMetaData(). Ta có thể sử dụng đối tượng này để tìm số và kiểu của cột cũng như tên của mỗi cột. ¨ getColumnCount(): Trả về số cột trong ResultSet. ¨ getColumnName(int): Trả về tên của cột được đánh số. ¨getColumnLabel(int): Trả về nhãn của cột được đánh số. ¨Iscurrency(int): Trả về true nếu cột này chứa một số trong Currency Unit. ¨ IsReadOnly(int): Trả về true khi nội dung trong cột là read only. ¨IsAutoIncrement(int): Trả về true nếu cột tự động tăng lên. Các cột này thường là khóa và là read only. ¨getColumnTypes(int): Trả về kiểu dữ liệu SQL cho cột này. Những kiểu dữ liệu này bao gồm: BIGINT, BINARY, BIT, CHAR, DATE, DECIMAL, DOUBLE, FLOAT, INTEGER, LONGVABINARY, LONGVACHAR, NULL, NUMERIC, OTHER, REAL, SMALLINT, TIME, TIMESTAMP, TINYINT, VARBINARY, và VARCHAR. e. Ðối Tượng DatabaseMetaData: Ðối tượng này cho ta thông tin về cơ sở dữ liệu hiện hành. Ta sử dụng nó một cách chính thức để lấy tên của bảng trong cơ sở dữ liệu, và tên của cột trong bảng. Do có nhiều cơ sở dữ liệu khác nhau nên chúng cung cấp nhiều sự khác biệt của SQL. Sau đây là một số phương thức mà nó có thể truy vấn đến cơ sở dữ liệu như những gì mà nó cung cấp cho SQL: ¨getCatalogs(): Trả về danh sách catalogs của các thông tin trong cơ sở dữ liệu. Với cầu driver JDBC_ODBC ta đã có một danh sách của cơ sở dữ liệu được ghi bằng ODBC. Rất hiếm khi Catalog được sử dụng trong cơ sở dữ liệu JDBC_ODBC. ¨getTables(catalog, schema, tablename, columnname): Trả về diện mạo của tất cả các bảng được gom trong tablename, và tất cả các cột gom lại trong tên cột. ¨getColumns(catalog, schema, tablename, columnname) ¨getURL(): Lấy tên của URL mà ta kết nối tới. ¨getDriverName(): Lấy tên của driver mà ta kết nối tới. f. Lấy Thông Tin Trên Table: Ta có thể lấy thông tin trên một bảng trong cơ sở dữ liệu bằng cách dùng phương thức getTables() trong kho DatabaseMetaData(). Phương thức này có bốn thông số: results=dma.getTables(catalog, schema, tablemask, type[]); - Catalog: Tên catalog để tìm tên bảng trong đó. - Schema: Giản đồ tóm lược cơ sở dữ liệu. Nhiều cơ sở dữ liệu không cung cấp Schema. Một số trường hợp khác, nó là username của người chủ cơ sở dữ liệu. Nó thường được đặt là null. - Tablemask: Một mask thì minh họa cho tên một bảng mà ta muốn lấy ra. Nếu ta muốn lấy tất cả tên bảng, ta đặt nó trong một ký tự wildcard %. Ký tự wildcard trong SQL là % chứ không giống như ký tự wildcard trong các chương trình khác là *. - Type[]: Một dãy String minh họa kiểu của bảng mà ta muốn lấy ra. Nếu type[] là null, ta sẽ lấy toàn bộ những thông tin trên bảng đó. Nếu ta để vào chỗ này một phần tử dãy chứa tên bảng kiểu String, ta sẽ chỉ thu được bảng mà ta muốn dùng. Ðoạn mã để lấy tên bảng trong cơ sở dữ liệu từ DatabaseMetaData: con= DriverManager.getConnection(url); //lấy meta database dma=con.getMetaData(); System.out.println("Da ket noi toi: "+dma.getURL()); System.out.println("Driver: "+dma.getDriverName()); //lấy ra tên của table trong CSDL String[] types =new String[1]; types[0]="Table"; //chú ý dấu hiệu % của wild card results=dma.getTables(null,null,"%",types); boolean more=results.next(); //tạo biến cho biết cột đã hết chưa. while(more) for(j=1;j<=numcols;j++){ System.out.print(results.getString(j)+""); System.out.println(); more=results.next(); } Tất cả đều được đặt trong khối try. TÓM TẮT CHƯƠNG IV. a&b Ngôn ngữ Java ngôn ngữ lập trình của Sun Microsystems, có một sức mạnh đầy ấn tượng. Java được phát triển vào thập kỷ 1990, do nhà thiết kế là James Gosling. Java phát triển nhanh chóng là nhờ Web. Nhưng trên thực tế, sức mạnh vốn có của Java không phải là ngôn ngữ lập trình cho Web. Hệ thống quan trọng nhất của ngôn ngữ lập trình Java là Java Virtual Machine (Máy ảo Java, bộ thông dịch). - Ưu điểm của java là: được Sun mô tả như là một ngôn ngữ lập trình đơn giản, hướng đối tượng, kiểu - mạng, có thể biên dịch, mạnh, an toàn, độc lập với cấu trúc, dễ di chuyển, hiệu suất cao, đa luồng, và có tính động. Java còn là một môi trường độc lập, đó là một lợi thế quan trọng cho phép Java hơn hẳn những ngôn ngữ khác, đặc biệt là cho những hệ thống cần làm việc trên nhiều môi trường khác nhau. - Nhược điểm của Java là: Java có tốc độ thực thi chương trình phải thông qua JVM nên tốc độ rất chậm so với các ngôn ngữ khác. - Hoạt động của một ứng dụng viết bằng Java: được chia làm hai loại: Java Applet và Java Application. - Cơ chế truyền nhận trong Java: Các máy tính chạy trên mạng Internet truyền thông với nhau dùng các Protocol TCP, UDP. + TCP là một protocol dựa trên connection, cung cấp các data flow tin cậy giữa 2 máy tính. + UDP là một protocol, gửi những package độc lập, gọi là các datagrams, từ máy này tới máy khác, không đảm bảo chắc chằn sẽ thành công. UDP không dựa trên connection như TCP. - Networking: + URL: URL là toàn bộ địa chỉ của Web Site hoặc trang Web. Có 5 loại URL : file, http, gopher, news, partials. + Sockets: Những lớp Socket và ServerSocket trong java.net package hỗ trợ cho việc thực hiện các kênh truyền TCP độc lập hệ thống. Một Socket là một end-point của một liên kết giữa hai chương trình chạy trên mạng. Các lớp socket được sử dụng để thể hiện connection giữa một chương trình client và một chương trình Server. Package java.net cung cấp hai lớp : Socket và ServerSocket tương ứng với client và server. Socket được xem là một cấu trúc dữ liệu trừu tượng (asbtraction data structure) dùng tạo ra một kênh truyền (channel) để gởi và nhận dữ liệu giữa các process trong cùng chương trình hay giữa các máy trong cùng môi trường mạng với nhau. - Java Security: Các Java-application không thực hiện tính bảo mật như Java-applet. Với một Java-application, nó có thể đọc và ghi file, giao tiếp với thiết bị, connect với các socket, . . .Nhưng với Java-applet thì không như vậy. Có nhiều việc mà Java-applet không được phép làm, và nhiều tài nguyên mà Java-applet chỉ nên hạn chế truy xuất. Các applet có thể quan hệ tới mô hình Client/Server cổ điển theo cách : Web server là server của applet - Multithreading:Việc áp dụng threads rất hiệu quả khi thiết kế Client với đặc tính : luôn thực hiện "đồng thời" hai nhiệm vụ: vừa listen data do Server gửi cho, vừa tương tác với user. Ngoài ra Server cũng buộc phải thực hiện multithreading, mỗi thread quản lý một connection với một client. - Synchronization (xử lý crictical section): Như đã nói ở trên, khả năng multithread do Java support mang lại nhiều lợi điểm. Tuy nhiên, điều gì sẽ xảy ra nếu hai thread truy xuất và làm thay đổi cùng một đối tượng? Lý thuyết chung của vấn đề này vẫn là: phải đảm bảo trong quá trình một thread truy xuất và sửa đổi đối tượng dùng chung, nó không bị interrupted ta dùng đến Synchronization. - Exceptions: Java cũng support việc quản lý exception, một đặc trưng quan trọng tạo nên sức mạnh của chương trình. Bất cứ khi nào một lỗi run-time xảy ra trong một phương thức, nó có thể throw một exception, giúp đoạn code chứa phương thức đó khắc phục lỗi hay thoát có chủ ý, không làm down toàn bộ hệ thống - Cơ sở dữ liệu dùng JDBC: Java có hai hướng: là một ngôn ngữ lập trình và cũng là một hệ thống client/server trong đó chương trình tự động download và chạy trên máy cục bộ (thay vì máy server). Một trong những thư viện của API đó là Java Database Connectivity hay JDBC. Mục đích chính là kết nối chặt chẽ ngôn ngữ Java với cơ sở dữ liệu. Chương 5 PHÂN TÍCH VÀ THIẾT KẾ CHƯƠNG TRÌNH. I - Giới thiệu, mục đích chương trình. - Mục đích của chương trình Company Chat là cung cấp một dịch vụ nhằm giúp đỡ những người quản lý của một công ty hoặc một tổ chức có thể kiểm soát tất cả nhân viên của mình, hoặc cần yêu cầu đến một phòng ban, hay cá nhân nhân viên nào đó,có thể trao đổi thông tin trực tiếp, trao đổi tài liệu, gởi thông báo,cập nhật tình hình công ty hàng ngày. Chương trình sẽ giải quyết bằng cách gởi thông điệp một cách nhanh chóng, đồng thời giảm được chi phí, công sức so với điện thoại . II - Nội dung đề tài. Xây dựng dịch vụ Chat dựa trên môi trường Client-Server. - Dùng cho một mạng lưới của một công ty hay một tổ chức nào đó. Chương trình chỉ dành cho những người trực thuộc công ty hay tổ chức đó đang sử dụng chương trình. - Chương trình cần cài đặt ở cả máy client và máy server - Máy Server sẽ là nguời chủ động kích hoạt chương trình. a. Đối với máy Server. Sau khi đã cài đặt thành công. - Quản lý tất cả các thông tin của các user đã đăng nhập,có thể thêm,xoá,sửa thông tin của nhân viên . - Đổi phông chữ thể hiện. - Đổi màu cho phông chữ. - Đổi màu cho background thể hiện. - Thay đổi max số người tham gia hệ thống chat, Time in, Time out của hệ thống. - Một khung text ghi chú trong mọi trường hợp. - Dưới mỗi thành viên có trong danh sách đều có một trang ghi chú riêng. Trên trang này sẽ tự động cập nhật ngày giờ gần nhất vừa được kích hoạt , danh sách các client kết nối vào và kết thúc kết nối . - Lưu lại những thông tin trên. Các đặc tính chung dành cho cả Server và Client. - Các tính năng chung. ¨ Gởi thông điệp tức thời đến tất cả thành viên có trong danh sách. ¨ Gởi thông điệp tức thời đến một số thành viên nào đó có trong danh sách. ¨ Gởi thông điệp tức thời đến một thành viên nào đó có trong danh sách. ¨ Chèn biểu tượng cảm xúc vào thông điệp tức thời. ¨ Lưu thông điệp tức thời này nếu bạn muốn ¨ Nếu sau khi mình disconnect,có thành viên nào đó gởi thông điệp hay muốn chat với mình thì sẽ có thông báo đi ra ngoài.Khi mình login thì thông điệp do ai đó gởi sẽ tự động hiện lên. - Trao đổi tập tin. ¨Trao đổi tập tin giữa các thành viên có trong danh sách. ¨ Tự động nhận tập tin gởi đến Server, client. - Đặc tính Image. ¨ Cho phép gởi tập tin hình ảnh/ âm thanh. ¨ Cho phép lưu tập tin hình ảnh/ âm thanh. III- Yêu cầu của đề tài Dựa vào nội dung đề tài đặt ra em đi xây dựng một chương trình ứng dụng dựa trên các yêu cầu sau : - Xây dựng một chương trình theo mô hình Client-Server, toàn bộ dữ liệu liên quan đến hệ thống được lưu trữ trên Server, tất cả những xử lý liên quan cũng được thực hiện trên Server. Việc truy cập và truyền dữ liệu được thực hiện thông qua mạng nhằm phục vụ cho việc kiểm tra, trao đổi cập nhật thông tin - Thông qua môi trường Web, người sử dụng có thể thực hiện các thao tác phù hợp với các chức năng sẵn có của chương trình .Thông qua trình duyệt Web này, người quản lý mạng có thể kiểm soát toàn bộ tiến trình của chương trình: lựa chọn, sắp xếp, cập nhật thông tin, yêu cầu về phía nhân viên…một cách nhanh chóng. - Đối tượng sử dụng chương trình: Chương trình được thực hiện chủ yếu dựa vào người quản lý. Chương trình sẽ được kích hoạt khi người quản lý này kích hoạt và các nhân viên sẽ được thực hiện chương trình tùy theo mức độ mà người quản lý cho phép. IV- Giải quyết vấn đề. 1- Khái niệm về mạng trong chương trình. - Dựa vào những yêu cầu và nội dung ở trên, ở đây đề tài của em sẽ nghiên cứu về mô hình mạng Client/Server. ¨Nhiệm vụ của máy client :là thi hành một dịch vụ cho người dùng, bằng cách kết nối với những chương trình tương ứng ở máy server, dựa vào những chuỗi nhập để chuyển yêu cầu cho máy server và trả kết quả cho người dùng. ¨Nhiệm vụ của máy server: luôn lắng nghe những kết nối đến nó trên những cổng liên quan đến giao thức phục vụ, khi máy client khởi tạo kết nối, máy server chấp nhận và tạo ra luồng riêng biệt phục vụ cho máy client đó. Máy client sẽ gởi những yêu cầu đến thông qua kết nối, máy server thực hiện những yêu cầu rồi trả lại kết quả cho máy client. Ngoài ra máy server phải quản lý các hoạt động của mạng như phân chia tài nguyên chung (hay còn gọi là tài nguyên mạng) trao đổi thông tin giữa các client,....máy server có thể đóng vai trò là máy trạm (client) trong trường hợp đó là máy server "không thuần tuý". - Mô hình client/server đã biến những máy tính riêng lẻ có khả năng xử lý thấp thành một mạng các máy chủ (server) và máy trạm (workstation) có khả năng xử lý hơn gấp hàng ngàn lần những chiếc máy tính mạnh nhất. Mô hình client/server giúp cho việc giải quyết những bài toán phức tạp một cách trở nên dễ dàng bằng cách phân chia bài toán đó thành nhiều bài toán con và giải quyết từng bài toán con một. Nhưng quan trọng hơn hết không phải là việc giải được những bài toán lớn mà là cách thức giải bài toán. Mô hình client/server đã giúp phát triển một phương thức phát triển ứng dụng mới là việc phân chia ứng dụng thành nhiều lớp thực hiện những chức năng chuyên biệt. Một ứng dụng thông thường được chia làm 3 lớp:      - Giao diện (Presentation logic): lớp này là cầu nối giữa người dùng với ứng dụng, cung cấp những chức năng của ứng dụng cho người dùng và nhận những lệnh từ người dùng cho ứng dụng. Lớp này được thiết kế sao cho càng thân thiện với người dùng càng tốt.        - Chức năng (tạm dịch từ Business logic): đây là phần lõi của một chương trình, cung cấp tất cả những chức năng có thể có của chương trình cho lớp giao diện bên trên.        - CSDL (Data Access logic): lớp này là CSDL của ứng dụng, cung cấp khả năng truy xuất đến CSDL cho lớp chức năng nếu cần. Việc phân chia ứng dụng thành nhiều lớp còn giúp cho ứng dụng trở nên dễ dàng thay đổi, cập nhật và đáng tin cậy hơn. - Ứng dụng đầu tiên của mô hình client/server là ứng dụng chia sẻ file (do các tổ chức có nhu cầu chia sẻ thông tin giữa các bộ phận trong tổ chức được dễ dàng và nhanh chóng hơn). Trong ứng dụng này, thông tin được chứa trong các file và được đặt tại một máy (server) của một phòng ban. Khi một phòng ban khác có nhu cầu trao đổi thông tin với phòng ban này thì sẽ sử dụng một máy (client) kết nối với máy server và tải những file thông tin cần thiết về. a- Đối với máy Server: Là một trong những phần quan trọng nhất của mạng máy tính. Mỗi Server là một tâm điểm trong hệ thống các Server. Chúng cho phép các client và các server khác kết nối vào và truy cập lấy dữ liệu, thông tin của nhau trên cùng hệ thống mạng. Những Server này được kết nối theo sơ đồ hình cây. b- Đối với máy Client - Một chương trình thực hiện trở thành client khi nó gửi yêu cầu tới server và đợi lời giải đáp trả về. Cũng vì thế mà mô hình client-server là tiện dụng và là sự mở rộng tự nhiên của tiến trình thông tin liên lạc trong nội bộ máy tính và xa hơn nữa là internet, nên có thể dễ dàng dùng mô hình này xây dựng những chương trình ứng dụng trong giao tiếp hay kinh doanh. - Để các máy kết nối được với nhau thì các chương trình ở máy client như trình duyệt(Web browser), gởi nhận e-mail, FPT client, Telnet client,... sẽ tạo kết nối với server ở xa sau đó gởi các yêu cầu đến máy server, các chương trình phục vụ trên máy chủ như Web server, Mail server, FPT server, Telnet server,... sẽ xử lý những yêu cầu này và gởi kết quả về cho máy client. Thông thường một dịch vụ trên máy server phục vụ cho rất nhiều máy client. 2 - Một số khái niệm về mạng liên quan: Mạng cục bộ(LAN-Wide Area Network) : là một hệ thống bao gồm các nút là các máy tính nối kết với nhau bằng dây cáp qua card giao tiếp mạng trong phạm vi nhỏ. Tùy theo cách giao tiếp giữa các nút mạng, người ta chia làm hai loại : * Mạng ngang hàng (peer to peer [Windows workgroups]) : là một hệ thống mà mọi nút đều có thể sử dụng tài nguyên của các nút khác. * Mạng khách chủ (client/server) : có ít nhất một nút trong mạng đảm nhiệm vai trò trạm dịch vụ (server) và các máy khác là trạm làm việc (workstation) sử dụng tài nguyên của các trạm dịch vụ. Mô hình Client- Server Hệ điều hành mạng : là một hệ thống quản lý tài nguyên dùng chung trên các server và cung cấp các phương tiện làm việc trong môi trường mạng và các ứng dụng tại các workstation sao cho có hiệu quả, trật tự và bảo mật thông tin của hệ thống lẫn người dùng. Hệ điều hành mạng được cài đặt tại server. Server : Cung cấp các dịch vụ cho các trạm làm việc (workstation),lưu trữ các thông tin dùng chung trong mạng, thông thường là một máy tính có đĩa cứng lớn và bộ nhớ có dung lượng lớn. Tuy nhiên trong một số hệ thống mạng cục bộ, Server cũng có thể còn dùng là trạm làm việc. Workstation : là một máy tính thường, người sử dụng có thể sử dụng tài nguyên của các server tại các workstation. Các nghi thức được sử dụng. Trong hệ điều hành Windows NT sử dụng những giao thức sau: NetBEUI là giao thức truyền thông chuẩn của Windows NT, IPX/SPX tương thích với chuẩn truyền thông của Novell. TCP/IP là chuẩn truyền thông giữa các họ máy tính và giữa các hệ điều hành khác nhau. Giao thức TCP/IP là chuẩn kết nối hiện nay sử dụng cho Internet và Intranet. 3 - Một số khái niệm về truyền thông trong chương trình : a. Truyền thông một - một (one - to - one communication). Truyền thông 1-1 phục vụ cho việc truyền thông điệp giữa hai client. Chuyển thông điệp này mang ý nghĩa là riêng biệt giữa 2 client nhưng thật ra vẫn phải thông qua các server mà những client đó kết nối đến. Ví dụ : xem hình dưới: client 1 giao tiếp với client 2 thông qua Server A. Message từ client 1 đến client 3 phải được chuyển qua ServerA và ServerB trong khi đó các Server và client còn lại không được nhận message. Mô hình mạng truyền thông : Server A : Server C : Server B : Server D : Server E 7 Client 2 7 Client 1 7 Client 3 7 Client 4 b. Truyền thông một - nhiều (one - to - many communication) Mục đích của loại truyền thông này là cung cấp cho các cuộc hội thảo, thảo luận v.v... Loại truyền thông này dựa trên nhiều cách. Dựa trên danh sách (one - to - List communication) Ðây là cách truyền thông điệp kém hiệu quả nhất trong truyền thông 1-n. Danh sách này có thể là các client, các server, hoặc là các mask. Server khi nhận được thông điệp có đích đến là một danh sách, nó sẽ chuyển thông điệp này đến tất cả các đích. Cách chuyển này không hiệu quả ở chỗ nó không kiểm tra các đích đến có cùng trên một con đường không, và như vậy có khả năng sẽ có nhiều thông điệp giống nhau cùng chuyển trên một con đường.  Truyền thông đến - host /server mask:Truyền thông điệp đến host/server mask là cách để gửi thông điệp đến cho nhiều người dùng có cùng một vài thông tin đặc điểm về host và server nào đó. c. Truyền thông một - tất cả(one to all Communication ) Có thể xem kiểu truyền thông này giống như phát quảng bá (broadcast). Trong đó, message được gởi đến tất cả các client và Server trên mạng và chúng sẽ tự tìm kiếm con đường trên mạng để đến tất cả các địa chỉ đích ( client destination ) Client to Client : Khái niệm tương tự như trên. Message từ một client đến một client khác. Client to Server : Hầu hết những tác vụ command mà chúng có khả năng làm thay đổi trạng thái hoạt động như là: user status, v, v..phải được gởi đến server để thực hiện, những giá trị này không được thay đổi bởi bất cứ client Chương trình Company Chat. A-PHÂN TÍCH I- Giới thiệu: 1. Các actor liên quan đến hệ thống:        Administrators.        Managers      Users Sơ đồ phân cấp hệ thống User. Login to System. Creat User Account Admin Change Password Change User Name Change code employee(MSNV Access User’s information Users Managers Access Organization Join Chatting Use case diagram (high level)  2. Mô tả Actor của hệ thống. Actor là một thực thể bên ngoài hệ thống, là những người mà sử dụng trực tiếp chương trình. Actor được đại diện với vai trò là tác nhân sinh ra các use case cơ bản. Trong chương trình Company Chat, chương trình có 3 actor chính đó là: Admin, Managers, Users.  Admin :quản lý user account cũng như toàn bộ thông tin của hệ thống.Có thể tạo ,xoá, xem, thay đổi thông tin của user account. User : Bị giới hạn nhiều trong việc truy cập vào những thông tin của hệ thống. Manager : không có quyền quản lý account, nhưng có quyền tham gia vào một số thông tin của hệ thống. Admin : Là một actor quản lý hệ thống Company Chat và cung cấp User Account cho những người sử dụng hệ thống. Những người có nhu cầu chia sẻ thông tin liên lạc trực tiếp với những thành viên trong công ty. Sau khi log in vào hệ thống, Admin có các quyền sau: Quản lý thông tin của các User Account của hệ thống. Có thể xem toàn bộ Users trong hệ thống. Thay đổi quyền của User: quyền admin, manager hay user. Tùy theo quyền được trao, User có thể truy xuất mọi chức năng của hệ thống hay không. Cho phép User login vào hệ thống hay không . Tạo, loại bỏ, thay đổi thuộc tính của một User và Managers. Cho phép trao đổi thông tin, thông điệp đến user và Managers. Admin có quyền thay đổi toàn bộ hệ thống liên quan. Nhưng chỉ được phép thay đổi khi được lệnh cần thay đổi của Manager, và tùy thuộc vào chức vụ của Manager sẽ cho phép Admin thực hiện điều lệnh hay không. Managers : Cũng là một Actor quản lý hệ thống Company Chat, ở đây manager không được phép quản lý User Account, nhưng có quyền truy xuất đến từng Account cá nhân.Tùy thuộc vào chức vụ cho phép Manager được quyền truy xuất ở mức độ nào. Manager được phép thay đổi hệ thống chương trình, nhưng còn tùy thuộc vào chức vụ, quyền hạn cho phép Manager có quyền ra lệnh cho admin hoặc trực tiếp thay đổi hệ thống chương trình ở mức độ cho phép. User : Sau khi login vào hệ thống, User có các quyền sau: - Thay đổi Password của chính mình và xem lý lịch của các thành viên trong hệ thống chat nhưng không được phép thay đổi. - Tìm kiếm ai đó có trong phòng chat hay không nếu biết ID-User của họ . - User được phép gởi thông điệp,gởi file đến cấp trên của mình . II - Xác định các Use Case của hệ thống Chúng ta định nghĩa các chức năng bên trong của hệ thống bằng cách chỉ ra các use case. Một use case là một cách cụ thể sử dụng hệ thống ở một phần chức năng nào đó. Mỗi use case thiết lập một chuỗi các sự kiện hoàn tất mà xảy ra giữa actor và hệ thống. Tập hợp các use case chỉ ra tất cả các cách sử dụng hệ thống đã có. Ðây là một bước quan trọng vì khi phân tích và miêu tả chi tiết các use case, hệ thống được nghiên cứu tỉ mỉ, những điểm còn chưa rõ trong yêu cầu sẽ dần hiện ra, giúp cho việc phân tích chính xác hơn. Quá trình xác định các use case của hệ thống là quá trình lặp đi lặp lại. Khi đã được xác định toàn bộ use case trong hệ thống, ta sẽ đi chi tiết hơn cho từng use case. Trong quá trình phân tích mô hình yêu cầu của Chatting System, em tìm được các use case sau đây miêu tả những hành vi cơ bản của chương trình : 1.   Use case : Login the system 2. Use case : Change Password 3. Use case : Change ID-User 4. Use case : Change First Name. 5. Use case : Change Last Name. 6. Use case : Change Birthday. 7. Use case : Change Sex. 8. Use case : Change Function. 9. Use case : Change SignIn. 10. Use case : Creat a new User. 11. Use case : Delete User. 13. Use case : Access User’s Information. 14. Use case : Join Chatting Ðây là một User Case chính của hệ thống . III-Chi tiết các Use Case:  1.   Use case : Login the system Actor : Admin, Manager, User. Kiểu : Primary Mô tả : Chương trình Chatting System(CS) quản lý các thông tin của Users (các nhân viên), vì vậy để sử dụng chương trình này trước tiên Admin, Manager, User phải log in vào hệ thống. Ðể truy nhập vào hệ thống, ứng dụng yêu cầu phải đăng nhập đầy đủ ID-User, Password, mà trước đó bạn đã được hệ thống cung cấp. Nếu thỏa mãn yêu cầu này, CS sẽ cho phép Users login vào hệ thống, Main Window sẽ được hiển thị các chức năng của hệ thống, ngược lại chương trình sẽ báo lỗi và yêu cầu nhập lại. Sau ba lần nhập sai, Dialog cho Users login vào hệ thống sẽ không hiển thị nữa và không làm gì cả. Diễn biến các sự kiện: Hoạt động của Actor Hệ thống đáp ứng 1. Use Case sẽ bắt đầu khi Admin chạy chương trình Chatting System. Sau đó là Managers và Users 3. User, Manager, Admin nhập vào User name, password đúng,sau đó nhấn nút Login và Cancel để hủy bỏ không tiếp tục đăng nhập hệ thống. 2. Hiển thị Log in Window yêu cầu UserName, password. 4. Kiểm tra UserName, password. Nếu đúng, cho phép User log in vào hệ thống và hiển thị Main Window. Nếu sai, thông báo lỗi và cho User nhập lại các yêu cầu. Nếu sau 3 lần vẫn sai, chương trình sẽ thoát. 2. Use case : Change Password Actor : Admin, Manager, User. Mô tả : Khi Admin, Manager, User muốn thay đổi password của mình, User phải log in vào hệ thống, sau đó chọn chức năng thay đổi password của hệ thống. Một Dialog sẽ được hiển thị để User nhập vào password mới. Diễn biến các sự kiện: Hoạt động của Actor Hệ thống đáp ứng 1.      Sau khi User log in vào hệ thống, bạn chọn chức năng thay đổi password 3.   User nhập vào password mới và nhấn nút OK hoặc có thể hủy bỏ việc thay đổi bằng cách nhấn nút Cancel. 2. Hiển thị một dialog cho User nhập vào password cũ,password mới,confirm password. 4.  Nếu confirm password không giống như password, hệ thống sẽ thông báo lỗi. Nếu giống nhau, dialog sẽ được đóng lại, Users đã có password mới. 3. Use case : Change ID-User Actor : Admin. Mô tả : khi Admin muốn thay đổi ID-User các thành viên phải log in vào hệ thống, sau đó chọn chức năng thay đổi ID-User của hệ thống. Một Dialog sẽ được hiển thị để Admin nhập vào ID- User mới. Diễn biến các sự kiện: Hoạt động của Actor Hệ thống đáp ứng 1.      Sau khi Admin log in vào hệ thống, bạn chọn chức năng thay đổi UserName. 3.      User nhập vào UserName mới và nhấn nút OK hoặc có thể hủy bỏ việc thay đổi bằng cách nhấn nút Cancel. 2. Hiển thị một dialog cho User nhập vào UserName mới. 4. Use Case Manage User Account: Ðây là một Use Case miêu tả diễn biến sơ bộ của hệ thống, để miêu tả chi tiết ta chia nhỏ Use Case thành những Sub Use Case cho từng chức năng riêng lẻ. Các Sub Use Case sẽ được miêu tả như sau: a. Use Case : Add User Account Actor : Admin Mục đích : Thêm một thành viên mới vào hệ thống chat. Kiểu : Primary Mô tả : Admin log in vào hệ thống và yêu cầu chức năng thêm mới một User. Hệ thống sẽ hiển thị một dialog để cho Admin nhập vào các thông tin của User mới đó. UserName, Ten, Ho, password, ngaysinh, chucvu, dangnhap phải nhập đúng và Admin sẽ kiểm tra có trùng với tên trong danh sách đã đăng nhập trước đó không. Nếu nhập sai chương trình sẽ báo lỗi và yêu cầu nhập lại cho đúng.  Diễn biến các sự kiện: Hoạt động của Actor Hệ thống đáp ứng 1.Admin yêu cầu chức năng tạo mới một User. 3. Admin nhập các thông tin cần thiết cho một User. Nhấn nút OK để hệ thống tạo mới User. Và ngược lại nhấn nút Cancel. 2. Hiển thị một dialog để Admin nhập vào các thông tin cho một User mới. Thông tin bắt buộc phải có là UserName, Ten, Ho, password, ngaysinh, chucvu, dangnhap. 4. Kiểm tra các thông tin. Nếu các thông tin của User đã tồn tại, chương trình sẽ thông báo lỗi và yêu cầu nhập lại . Password và confirm password phải giống nhau, nếu không chương trình cũng yêu cầu nhập lại. Nếu mọi thông tin của new User đều hợp lệ, chương trình sẽ tạo mới một User account với UserName, Ten, Ho, password, Ngaysinh, chucvu, Ma Dangnhap do Admin cung cấp. b. Use Case : Update User Account Actor : Admin Mục đích : thay đổi quyền và các thông tin của User Mô tả : Sau khi log in vào hệ thống, Admin sẽ chọn chức năng xem toàn bộ các User mà Admin đã tạo. Từ danh sách của các User, Admin chọn User account mà bạn muốn thay đổi thông tin của User. Sau đó gọi chức năng cập nhật dữ liệu của ứng dụng. Từ Window hiển thị các dữ liệu của User, Admin nhập vào dữ liệu cần update mới lại. Diễn biến các sự kiện Hoạt động của Actor Hệ thống đáp ứng 1.Admin yêu cầu hiển thị toàn bộ các User của hệ thống. 3.Admin chọn User account mà bạn muốn thay đổi những thông tin của User đó. 5. Admin có quyền thay đổi các thông tin trên User account, nếu được sự đồng ý của Manager. 7.Admin đồng ý hay không 2.Hiển thị một danh sách chứa tất cả các User account của ứng dụng. 4. Hiển thị Window chứa các thông tin của User mà Admin muốn thay đổi. 6.Hiển thị message, Admin có thay đổi thông tin đó hay không . 8. Cập nhật dữ liệu cho User. c. Use Case : Delete User Account Actor : Admin Kiểu : primary Mô tả : Sau khi log in vào hệ thống, Admin sẽ chọn chức năng xem toàn bộ các User mà Admin đã tạo. Từ danh sách của các User, Admin chọn User account mà bạn muốn delete, sau khi được sự đồng ý của Manager. Sau đó nhấn nút Delete để xóa User account đó. Diễn biến các sự kiện: Hoạt động của Actor Hệ thống đáp ứng 1.Admin yêu cầu hiển thị toàn bộ các User của hệ thống. 3.Admin chọn User account mà bạn muốn xóa. 5. Admin đồng ý hay loại bỏ. 2.Hiển thị một danh sách chứa tất cả các User account của ứng dụng. 4. Hiển thị message xem Admin có thực sự muốn xóa User account đó hay không? 6. Delete User account nếu Admin đồng ý xóa. d. Use case : Find User Account. Actor : admin, managers,user. Type : primary Mô tả : Users đăng nhập vào hệ thống và chọn chức năng “tìm kiếm nhân viên”. Users cung cấp một số thông tin về nhân viên mà bạn muốn tìm kiếm .Hệ thống sẽ hiển thị danh sách những nhân viên thỏa điều kiện. Diễn biến các sự kiện: Hành động của Actor Ðáp ứng của hệ thống 1. Use case này bắt đầu khi manager đăng nhập hệ thống rồi chọn chức năng “tìm kiếm nhân viên”. 2. Hệ thống hiển thị một màn hình cho manager nhập điều kiện tìm kiếm vào. 3. Manager nhập điều kiện tìm kiếm vào, rồi sau đó nhấn nút “Search” 4. Hệ thống hiển thị danh sách các nhân viên thỏa điều kiện. 5. Use Case Join Chatting Use case : Join chatting Actor : User, manager,admin. Kiểu : Primary Mô tả : Với Use Case Join chatting, Admin, manager, User sau khi đăng nhập thành công sẽ vào đây để gởi thông điệp, trao đổi thông tin đến bất kỳ thành viên nào đã có trong danh sách do đăng nhập. Đây là mục đích chính của chương trình. Diễn biến các sự kiện Hoạt động của Actor Hệ thống đáp ứng 1. Sau khi log in vào hệ thống,Admin, User, Manager có quyền tìm kiếm bạn hoặc một nhóm cùng phòng,… 3.Admin ,User, manager nhập vào nội dung thông điệp sau khi đã chọn người cùng thực hiện việc Chat. Sau đó nhấn nút OK. 2. Hiển thị một window để User có thể soạn thảo nội dung vào hộp thoại của chatting. IV. Sắp xếp lược đồ các Use Case 1. Ðộ ưu tiên của Use Cases: Rank Use Case Justification High Manage User Account Join Chatting Ðây là Use Case chính của ứng dụng. Lưu trữ thông tin, thay đổi những thông tin hệ thống quan trọng. Nó còn ảnh hưởng đến sự bảo mật và cung cấp User account của ứng dụng. Medium Access Person’s Information Use Case này cung cấp những thông tin cần thiết về những thành viên có trong chương trình, và một số các thông tin khác liên quan. Low Start to the system Ðây là những Use Case mà bắt buộc phải có trong mọi ứng dụng. 2. Lược đồ phát triển các Use Cases: Development Cycle 1: Access User’s Information. Development Cycle 2: Access Chatting. Development Cycle 3: Manage User Account. Development Cycle 4: Start to the system. 3. System behaviour Trước khi tiến hành thiết kế ở mức logical của ứng dụng, để xem phần mềm sẽ làm việc như thế nào. Cần thiết để xem toàn bộ các hành vi như là những hộp đen. Trong phần thiết kế theo dạng hướng đối tượng System behavior được xem như là một sự mô tả những gì mà hệ thống làm mà không có sự giải thích là nó sẽ làm bằng cách nào. Phần miêu tả các hoạt động riêng lẻ của các Use Case sẽ được phân tích qua những sequence diagram : Sequence diagrams cho các use case:  Log in vào hệ thống : System Admin,Manager, User 1: login(username,password) Thay đổi Password User, Manager,Admin : System 1: changePass(oldPwd,newPwd) 2: endchange() Hiển thị thông tin của tất cả Users : Admin : System 1: TableData(User_ID) Xem thông tin của một User. : Admin : System 2: Search(User_ID) 1: Search(User_ID) 3: endSearch() Tìm kiếm một User. : Admin,Manager,User : System 1: search(User_ID) 2: endsearch() Xem thông tin về Server. : Admin : System 1: Interface_Config() 2: endInterface_Config() Xem tất cả Users. : Admin : System 1: Display() 2: endDisplay() Tạo mới một thành viên : Admin : System 2: updateUser(User_ID) 1: newUser(User_ID) 3: endnewUser() Xóa một người sử dụng : Admin : System 1: deleteUser(personID) 2: endDelete() Cập nhật thông tin User Account. : Admin : System 1: update(User_ID) 2: endUpdate() Thay đổi thông tin của người sử dụng : Admin : System 1: ChangeAdmin(User_ID) 2: endChangeAdmin() Tạo mới User Account. : Admin : System 1: addUser(user-name,pwd) 3: endAdd() 2: update(username) Xóa một User Account : Admin : System 1: delete(username) 2: endDelete() Join Chatting : User, Manager : System 1: JoinChat(Uname) 2: endJoinChat() B-THIẾT KẾ I - Môi trường Tools: Jbuilder 6.0 Software: SQL Server 2000. II - Kiến trúc 1. Tổng quan Ứng dụng này được thực hiện theo dạng hướng đối tượng. Cả trong quá trình phân tích và thiết kế chương trình. Ứng dụng được thực hiện theo mô hình two - tier Cách phân cấp của chương trình này. Giữa giao diện và cơ sở dữ liệu ta có viết một lớp ở giữa có nhiệm vụ cầu nối và thao tác các yêu cầu trên lớp giao diện. Client Interface Communication Layer Database Database Interface class Process class Domain Ojbect Service User/Manager/Admin Login Dialog Login Process UserRole Database 1: Login(User_ID,Pass) 2: Login 3: Login(User_ID,Pass ) 4: Check(User_ID,Pass ) 5: Check( User_ID,Pass ) 2. Interaction Diagram: Interaction diagram là tập hợp các nhóm message riêng lẻ như đã nêu trong phần các User case. Một message là một phương thức kết nối giữa hai object. Một dòng yêu cầu được gởi từ object này đến object kia. Message có thể kèm theo các parameter chứa các giá trị cần trao đổi giữa hai object hoặc không. Các message được gởi và nhận bởi hai object sẽ được xếp chung với nhau tạo nên một interaction diagram. Các message có sắp xếp theo thứ tự thời gian gởi nhận hoặc theo dòng dữ liệu. Sau đây là các interaction diagram của Chatting System Login in System Admin/Manager/User process database 2: changePass 3: changePass(newPass) 4: changePass(newPass) Change Password change password 1: provide new password Admin change User name process database 2: change Username 3: changeUname(newUname) 4: changeUname(newUname) Change User Name change User name dialog Database : Admin User's List Form User's List Handler User's Detail Dialog User's Detail Handler User Service 1: Provide Criteria 2: Search 3: Search(User_ID) 4: Search(User_ID) 5: Search(User_ID) 6: Search Result 7: Search Result 8: Search Result 9: Show Properties 10: Show(User()) 11: Show(User) 12: Show(User) 13: Change Information 14: Update 15: Update(User) 16: Update(User) 17: Update(User) 18: Delete 21: Delete(User) 23: New User 24: New(User) 25: Insert(User) 26: Insert(User) 22: Provide Information 19: Delete(User) 20: Delete(User) Manage/Admin User Account Admin/Manager/User Compose 1: Select (Username,Msnv) Chatting List Chatting Ser 2: Select (Username,Msnv) 3: Select (Username,Msnv) 4: Select (Username,Msnv) 5: Result Select 6: Result. 7: Send Messager 8: Send Messager 9: Send Messager 10: Receive Message 11: Receive Message 12: Receive Message database User Chat Admin/Manager Organization's List Form Organization's List Hander Organization's Ditail Dialog Organization's Hander Dialog Organization Service Database 1: Provide Criteria 2: Search 3: Search(Criteria) 4: Search(Criteria) 5: Search(Criteria) 6: Search Result 7: Search Result 8: Search Result 9: Show properties 10: Show(Organization) 11: Show(Organization) 12: Show(Organization) 13: Delete 14: Delete(Organization) 15: Delete(Organization) 16: Delete(Organization) 18: Update 19: Update(Organization) 20: Update(Organization) 21: Update(Organization) 17: Change Information 22: Provide new Organization 23: New Organization 24: New (Organization) 25: Insert (Organization) 26: Insert (Organization) Manage Organization TÓM TẮT CHƯƠNG V a&b - Mục đích của chương trình Company Chat là cung cấp một dịch vụ nhằm giúp đỡ những người quản lý của một công ty hoặc một tổ chức có thể kiểm soát tất cả nhân viên của mình, hoặc cần yêu cầu đến một phòng ban, hay cá nhân nhân viên nào đó. Chương trình sẽ giải quyết bằng cách gởi thông điệp đến người bạn đang cần một cách nhanh chóng, đồng thời giảm được chi phí, công sức so với điện thoại. - Yêu cầu của chương trình: + Xây dựng một chương trình theo mô hình Client-Server, toàn bộ dữ liệu liên quan đến hệ thống được lưu trữ trên Server, tất cả những xử lý liên quan cũng được thực hiện trên Server. Việc truy cập và truyền dữ liệu được thực hiện thông qua mạng nhằm phục vụ cho việc kiểm tra, trao đổi cập nhật thông tin + Thông qua môi trường Web, người sử dụng có thể thực hiện các thao tác phù hợp với các chức năng sẵn có của chương trình ,thông qua trình duyệt Web này, người quản lý mạng có thể kiểm soát toàn bộ tiến trình của chương trình: lựa chọn, sắp xếp, cập nhật thông tin, yêu cầu về phía nhân viên…một cách nhanh chóng. - Đối tượng sử dụng chương trình: Chương trình được thực hiện chủ yếu dựa vào người quản lý: Chương trình sẽ được kích hoạt khi người quản lý này kích hoạt và các nhân viên sẽ được thực hiện chương trình tùy theo mức độ mà người quản lý cho phép. - Khái niệm về mạng trong chương trình: Dựa vào những yêu cầu và nội dung ở trên, ở đây đề tài của em sẽ nghiên cứu về mô hình mạng Client/Server. +Nhiệm vụ của máy client :là thi hành một dịch vụ cho người dùng, bằng cách kết nối với những chương trình tương ứng ở máy server, dựa vào những chuỗi nhập để chuyển yêu cầu cho máy server và trả kết quả cho người dùng. +Nhiệm vụ của máy server: luôn lắng nghe những kết nối đến nó trên những cổng liên quan đến giao thức phục vụ. - Chương trình em phân tích bao gồm các thành phần sau: giới thiệu các actor liên quan đến chương trình đó, mô tả các actor liên quan, xác định các Use case của hệ thống, chi tiết các Use Case này, sắp xếp lược đồ các Use Case(tùy thuộc vào độ ưu tiên, các lược đồ, System behaviour). - Thiết kế: Môi trường làm việc, kiến trúc tổng quan, Interaction Diagram. Chương 6 hƯỚNG DẪN VÀ TÓM TẮT CHƯƠNG TRÌNH PHẦN I : HƯỚNG DẪN CHƯƠNG TRÌNH. a&b Chương trình thực hiện gồm 3 phần: + Khởi tạo cơ sở dữ liệu. + Chương trình chính thực hiện ở Server. + Chương trình yêu cầu thực hiện ở Client . I. Khởi tạo cơ sở dữ liệu. 1.1. Đăng nhập cơ sở dữ liệu ODBC. Để thực hiện chương trình trước hết cần đăng nhập cơ sở dữ liệu. Để truy xuất đến cở sở dữ liệu ODBC dưới nền Window. Ta phải đăng ký nó với một bảng điều khiển driver ODBC dưới nền Window, đó là một Icon trong Control Panel. Click chuột vào đây để thực hiện đưa cơ sở dữ liệu vào. Sau đó chọn mục như hình dưới đây. Đánh tên cơ sở dữ liệu vào và chọn Select, sau khi cập nhật cơ sở dữ liệu xong, màn hình sẽ hiển thị như hình sau. 1.2. Phân tích một ứng dụng Java : Ðể có thể làm việc với dữ liệu của một CSDL, một chương trình Java phải tuân theo các bước sau : - Thực hiện một kết nối với CSDL : chương trình Java sẽ gọi phương thức getConnection() để nhận về đối tượng Connect. - Các chương trình Java chỉ thực hiện được các lệnh trên CSDL thông qua đối tượng Statement. Các câu lệnh SQL có thể được thực hiện tức thì thông qua đối tượng Statement, có thể là một câu lệnh biên dịch trước ( đối tượng PreparedStatement) hay là có thể là lệnh gọi các thủ tục cài sẵn (stored Procedure) trongCSDL (đối tượng CallableStatement). Các câu lệnh SQL có thể thực hiện thông qua các phương thức: executeQuery() - kết quả là một đối tượng ResultSet, hay phương thức executeUpdate() - kết quả là một số nguyên cho biết tổng số các dòng (Records) dữ liệu chịu tác dụng của câu lệnh vừa thực hiện ( thường đó là các câu lệnh sửa chữa số liệu như update hay delete). Trong trường hợp có sử dụng trình quản lý transaction, các phương thức rollback() được dùng để phục hồi trạng thái trước đó và commit() để xác nhận việc thực hiện. Ðể kết thúc cần xóa kết nối, xóa các đối tượng để giải phóng tài nguyên của hệ thống. 1.3. Thiết lập kết nối: Gồm hai giai đoạn: * Nạp trình điều khiển: * Cấu trúc lệnh: Class.forName("mydriver.ClassName") myDriver: tên trình điều khiển. ClassName: tên của class tương ứng. Tạo kết nối: Ta tạo một đối tượng Connection bằng cách gọi phương thức getConnection() của lớp DriverManager như sau: Connection conn =riverManager.getConnection(url,"myLoginName","myPassword"); Với url: là một chuỗi nêu lên đặc điểm của CSDL có dạng: jdbc:subprotocol:subname Subprotocol là giao thức con tương ứng với loại CSDL, subname là tên của CSDL(Datasource). "myLoginName": là tên người dùng khi đăng nhập vào CSDL. "myPassword": là mật khẩu người dùng khi đăng nhập vào CSDL. 1 .4 . Tạo bảng: Ta tạo đối tượng Statement từ kết nối conn ở trên: Statement stmt = conn.createStatement(); Cấu trúc lệnh tạo bảng bằng SQL có dạng: CREAT TABLE (tên_field_1 Kiểu_dữ_liệu,...) 1.5 . Nhập dữ liệu vào bảng: Câu lệnh SQL: INSERT INTO[(tên field1, tên field2,...)][VALUES(value1, value2,...)][SELECT mfield1, mfield2,...FROM,...] Trong đó: : là tên của bảng cần nhập dữ liệu vào thêm. tên fields: chỉ định các field cần thêm giá trị. Values: giá trị cần nhập vào. Thứ tự của các giá trị này tương ứng với thứ tự các field được chỉ định. 1.6 . Cập nhập dữ liệu: Khi cần thay đổi giá trị của một hay nhiều Field của một hay nhiều record của một bảng, ta cần dùng lệnh UPDATE để xử lý. Câu lệnh SQL: UPDATE SET = value1, = valu2,... WHERE ; Câu lệnh có ý nghĩa là: cần gán giá trị value1 cho field có tên là , giá trị value2 cho tên field2,. của bảng cho các record thỏa điều kiện . 1.7 . Truy xuất dữ liệu: Truy xuất dữ liệu là tìm và nhận lấy một hay nhiều record thỏa mãn yêu cầu tìm kiếm. Kết quả của việc truy xuất dữ liệu có thể là tập các records hay chỉ là một giá trị cụ thể. Thông thường ta dùng SQL SELECT để nhận về một kết quả là một tập records gọi là ResultSet. Sau đó duyệt lần lượt qua các record của tập kết quả để thực hiện các thao tác trên các dữ liệu thu được. II. Chương trình thực hiện ở Server. Package ServerChat: Gói này chứa các gói chính sau. + ChatServer(); + ListenPrivate(ChatServer chatserver); + ServerPrivateThread(ListenPrivate server, Socket soc); + ListenFile(ChatServer chatserver); + ServerFileThread(); + LoginAdmin(ChatServer server); + CheckLoginUser(String ID_User, String Pass); + AccountUser(String ID_User,String Password, String Ma_DN); + ChangeAdmin(String ID_User , ChatServer server); + ChangePas(String ID_User); + DelUser(DisplayUser allUser, Vector NameUser); + DisplayUser(); + EncodePassword(); + Information_Config(ChatServer server); + Interface_Info(Hashtable UserIfor, DisplayUser displayUser); + NewUser(DisplayUser allUser); + PrintPreview(Printable target, String title); + ProcessODBC(); + Search(ProcessODBC data); + SendAll(String ID, ChatServer server); + StartServer(); + StoreUser(); + TableData(Vector[] table, String user); + textchat(String From, String To, DataOutputStream out); + Timer(ChatServer ser); + WriteFileLog(String Namefile); Ngoài ra còn một số lớp khác sinh ra trong quá trình hoạt động của hệ thống và các lớp phụ trợ khác LỜI NÓI ĐẦU Chat là một trong những dịch vụ internet rất phổ biến.Cùng với sự phát triển không ngừng của các hệ thống mạng máy tính rộng khắp toàn cầu,việc sử dụng dịch vụ chat không còn mấy xa lạ đối với người sử dụng.Dịch vụ chat giúp mọi người nói chuyện với nhau một cách trực tiếp bằng cách gõ phím ,rất nhanh chóng ,tiện lợi ,và có tính kinh tế cao. . Dựa vào nội dung đề tài đặt ra em đi xây dựng một chương trình ứng dụng được thực thi trên hệ điều hành window,ngôn ngữ lập trình Java và giao thức mạng TCP/IP dựa trên các yêu cầu sau : - Xây dựng một chương trình chat theo mô hình Client-Server, toàn bộ dữ liệu liên quan đến hệ thống được lưu trữ trên Server, tất cả những xử lý liên quan cũng được thực hiện trên Server. Việc truy cập và truyền dữ liệu được thực hiện thông qua mạng nhằm phục vụ cho việc kiểm tra, trao đổi cập nhật thông tin - Thông qua môi trường Web, người sử dụng có thể thực hiện các thao tác phù hợp với các chức năng sẵn có của chương trình . Chương trình cung cấp một dịch vụ nhằm giúp đỡ những người quản lý của một công ty hoặc một tổ chức có thể kiểm soát tất cả nhân viên của mình, hoặc cần yêu cầu đến một phòng ban, hay cá nhân nhân viên nào đó. Chương trình sẽ giải quyết bằng cách gởi thông điệp đến người bạn đang cần một cách nhanh chóng, đồng thời giảm được chi phí, công sức so với điện thoại. Báo cáo gồm có các nội dung sau: * Tìm hiểu tổng quan về Internet. * Tìm hiểu về Internet Relay Chat (IRC). * Tìm hiểu các dịch vụ chat trên mạng . * Giới thiệu ngôn ngữ lập trình Java. * Phân tích và thiết kế chương trình. * Hướng dẫn và tóm tắt chương trình. Trong quá trình thực tập ,mặc dù có nhiều cố gắng nhưng không tránh được sai sót, kính mong thầy cô và các bạn giúp đỡ để báo cáo thực tập và luận án tốt nghiệp của em hoàn thiện hơn. Xin chân thành cảm ơn thầy Hồ Sỹ Bàng đã hướng dẫn tận tình để em hoàn thành luận án tốt nghiệp này. Sinh viên thực hiện: Bùi Thị Thu Hiền.

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

  • docXây dựng dịch vụ Chat trên mạng - Trường đại học bách khoa hà nội - trường đại học thuỷ sản khoa công nghệ thông tin - năm 2003 - 112 trang.doc