Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 55 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
55
Dung lượng
889,86 KB
Nội dung
MƠN LẬP TRÌNH MẠNG Chương Viết hệ thống MiniChatter Java & dùng kỹ thuật multi-thread 3.1 Xây dựng module MiniChatter Client 3.2 Xây dựng module MiniChatter Server Bộ môn : Công nghệ phần mềm Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Mơn : Lập trình Mạng Chương : Viết hệ thống MiniChatter Java & dùng kỹ thuật multi-thread Slide 76 3.1 Xây dựng module client MiniChatter Chúng ta thiết kế giao diện cho Form ứng dụng MiniChatClient sau : Cửa sổ phục vụ lệnh Connect : Cửa sổ phục vụ lệnh Login : Bộ môn : Công nghệ phần mềm Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Lập trình Mạng Chương : Viết hệ thống MiniChatter Java & dùng kỹ thuật multi-thread Slide 77 Xây dựng module client MiniChatter Chạy JBuilder từ Windows Màn hình JBuilder ₫ược hiển thị sau : Bộ môn : Công nghệ phần mềm Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Lập trình Mạng Chương : Viết hệ thống MiniChatter Java & dùng kỹ thuật multi-thread Slide 78 Xây dựng module client MiniChatter Chọn menu File.Close Projects ₫ể hiển thị cửa sổ "Close Projects", chọn button "All" Ok ₫ể ₫óng Project ₫ang mở : Bộ mơn : Công nghệ phần mềm Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Mơn : Lập trình Mạng Chương : Viết hệ thống MiniChatter Java & dùng kỹ thuật multi-thread Slide 79 Xây dựng module client MiniChatter Chọn menu File.New Project ₫ể tạo Project quản lý ứng dụng MiniChatClient : Bộ môn : Công nghệ phần mềm Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Mơn : Lập trình Mạng Chương : Viết hệ thống MiniChatter Java & dùng kỹ thuật multi-thread Slide 80 Xây dựng module client MiniChatter Nhập tên Project, chọn thư mục chứa Project, chọn Template qui ₫ịnh cấu hình ban ₫ầu cho Project (nên ₫ể mặc ₫ịnh), ấn button Next : Bộ môn : Công nghệ phần mềm Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Mơn : Lập trình Mạng Chương : Viết hệ thống MiniChatter Java & dùng kỹ thuật multi-thread Slide 81 Xây dựng module client MiniChatter Chọn version JDK, chọn thư mục chứa file Output, Backup, chọn thư mục Working (nên ₫ể mặc ₫ịnh), ấn button Next : Bộ môn : Công nghệ phần mềm Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Mơn : Lập trình Mạng Chương : Viết hệ thống MiniChatter Java & dùng kỹ thuật multi-thread Slide 82 Xây dựng module client MiniChatter Chọn cách mã hóa chuỗi UTF-8, nhập Title vá thông tin khác ứng dụng, muốn, ấn nutton Finish : Bộ môn : Công nghệ phần mềm Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Mơn : Lập trình Mạng Chương : Viết hệ thống MiniChatter Java & dùng kỹ thuật multi-thread Slide 83 Xây dựng module client MiniChatter Chọn menu File.New , cửa sổ Object Gallery hiển thị, chọn icon "Application" ₫ể tạo ứng dụng Project : Bộ môn : Công nghệ phần mềm Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Lập trình Mạng Chương : Viết hệ thống MiniChatter Java & dùng kỹ thuật multi-thread Slide 84 Xây dựng module client MiniChatter Nhập tên ứng dụng, chọn Package chứa ứng dụng (nên ₫ể mặc ₫ịnh) ấn button Next : Bộ môn : Công nghệ phần mềm Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Mơn : Lập trình Mạng Chương : Viết hệ thống MiniChatter Java & dùng kỹ thuật multi-thread Slide 85 Xây dựng module Server MiniChatter // code file MiniChatServerDlg package jbminichatclient; import java.awt.*; import java.awt.event.*; import javax.swing.*; import com.borland.jbcl.layout.*; import java.util.*; import java.net.*; import java.io.*; import java.sql.*; public class MiniChatServerDlg extends JFrame implements MessageListener { //các thuộc tính cần dùng cho Server int m_groupcnt; // số nhóm T_UserRec m_sock_no_user=null; // danh sách user chưa login T_GroupList m_grouplist[] = new T_GroupList[10]; // danh sách nhóm String uname; // tên user ServerSocket serverSocket; // socket mà server dùng ₫ể accept final int SERVER_PORT = 256; // port lắng nghe server //các thuộc tính cần dùng cho Server JPanel contentPane; Bộ môn : Công nghệ phần mềm Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Lập trình Mạng Chương : Viết hệ thống MiniChatter Java & dùng kỹ thuật multi-thread Slide 116 Xây dựng module Server MiniChatter //Constructor frame public MiniChatServerDlg() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); try { jbInit(); } catch(Exception e) { e.printStackTrace(); } // thiết lập kích thước form this.setSize(new Dimension(490, 445)); // tạo model chứa nội dung listbox DefaultListModel model = new DefaultListModel(); jlbGroups.setModel((ListModel)model); model =new DefaultListModel(); jlbUsers.setModel((ListModel)model); model =new DefaultListModel(); jlbContent.setModel((ListModel)model); // truy xuất danh sách nhóm từ database hiển thị lên listbox Groups ReadDisplayGroups(); Bộ môn : Công nghệ phần mềm Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Môn : Lập trình Mạng Chương : Viết hệ thống MiniChatter Java & dùng kỹ thuật multi-thread Slide 117 Xây dựng module Server MiniChatter // tao sersersocket lắng nghe cho server try { serverSocket = new ServerSocket( SERVER_PORT, 100 ); DefaultListModel lmContent = (DefaultListModel)jlbContent.getModel(); lmContent.addElement("Server listening on port " + SERVER_PORT + " "); // tạo thread ₫ể chờ accept new ServerAcceptThread(this,serverSocket).start(); } // end try // handle exception creating server and connecting clients catch ( IOException ioException ) { ioException.printStackTrace(); } } // ₫ọc danh sách nhóm từ database hiển thị private void ReadDisplayGroups(){ String conStr = "jdbc:odbc:GroupList"; Connection con; String newSQL = "Select * from GroupList"; String[] data = {"dummy"}; DefaultListModel lmGroups = (DefaultListModel)jlbGroups.getModel(); Bộ môn : Công nghệ phần mềm Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Mơn : Lập trình Mạng Chương : Viết hệ thống MiniChatter Java & dùng kỹ thuật multi-thread Slide 118 Xây dựng module Server MiniChatter try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //1 Tao connection mieu ta database can truy xuat = DriverManager.getConnection(conStr,"",""); //2 Tao doi tuong Statement lien ket den connection java.sql.Statement stmt = con.createStatement(); //4 Tao doi tuong recordset chua ket qua cua lenh SQL ResultSet rs =stmt.executeQuery(newSQL); //5 Duyet recordset de xu ly cac record cua no int i = 0; lmGroups.clear(); if (rs != null) while (rs.next()) { m_grouplist[i] = new T_GroupList(); m_grouplist[i].name = rs.getString("groupname"); lmGroups.addElement(m_grouplist[i].name); i++; } m_groupcnt = i; //6 Dong cac dong tuong da tao rs.close(); stmt.close(); con.close(); } catch (Exception e) {System.out.println("Error : "+e);} } Bộ môn : Công nghệ phần mềm Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Mơn : Lập trình Mạng Chương : Viết hệ thống MiniChatter Java & dùng kỹ thuật multi-thread Slide 119 Xây dựng module Server MiniChatter // hàm xử lý request ₫ến từ socket sock public void messageReceived( Socket sock, String mesg ) { int status; String opcode = mesg.substring(0,5); if (opcode.compareTo("LOGIN")==0) { // login Do_login(sock,mesg); } else if (opcode.compareTo("LOGOU")==0) { // logout Do_logout(sock); } else if (opcode.compareTo("GLIST")==0) { // group list Do_glist(sock); } else if (opcode.compareTo("ULIST")==0) { // user list Do_ulist(sock); } else if (opcode.compareTo("CLOSE")==0) { // user list Do_CloseSock(sock); } else { // broadcast message Do_MulticastMesg(sock,mesg.substring(5)); } } Bộ môn : Công nghệ phần mềm Khoa Công nghệ Thông tin Trường ĐH Bách Khoa Tp.HCM Mơn : Lập trình Mạng Chương : Viết hệ thống MiniChatter Java & dùng kỹ thuật multi-thread Slide 120 Xây dựng module Server MiniChatter private void Do_glist(Socket sock) { String mesg,mesg1; int i; mesg = "1 "+m_grouplist[0].name; for (i=1;i