Lập trình MiniChat bằng VC++ dùng cơ chế xử lý sự kiện

Slides:



Advertisements
Similar presentations
GV: Nguyễn Thị Thúy Hiền PHÒNG GD&ĐT PHÚ VANG TRƯỜNG THCS PHÚ THƯỢNG.
Advertisements

CÁCH SỬ DỤNG WINDOWS MOVIE MAKER Xin bấm vào đây để xem tiếp)
5.
Cài đặt Moodle Cài đặt Moodle trên môi trường Windows Cục CNTT-Bộ GD&ĐT.
Kỹ năng Trích dẫn và Lập danh mục tài liệu tham khảo
Cách trộn thư trong Office 2003 Ứng dụng để làm giấy khen, giấy mời.
Chào mừng quý thầy cô và các em TRƯỜNG THPT TRẦN VĂN KỶ TỔ LÝ – TIN - KTCN.
Orientation Các vấn đề về IT.
Giáo viên: Nguyễn Ngọc Thúy Hằng Đơn vị: Trường THPT Lê Quý Đôn
Java I/O.
SO¹N GI¶NG GI¸O ¸N ĐIÖN Tö e-LEARNING
TRAO ĐỔI KINH NGHIỆM PHƯƠNG PHÁP ÔN LUYỆN & KỸ NĂNG THI TOEIC
CƠ CHẾ QUẢN LÝ KINH TẾ TRƯỚC THỜI KÌ ĐỔI MỚI (1975 – 1986)
37 Lê Quốc Hưng, Quận 4, Tp. Hồ Chí Minh ​ (08) ĐỀ XUẤT POC CÁC GIẢI PHÁP GIÁM SÁT HẠ TẦNG TRÊN NỀN TẢNG CÔNG.
1 BÀI 6 BẤM CÁP VÀ CHIA SẺ DỮ LIỆU MẠNG. 2 Nội Dung  Bấm cáp xoắn đôi đúng chuẩn Phương pháp bấm cáp chuẩn A Phương pháp bấm cáp chuẩn B  Kết nối máy.
TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH C/C++
Quản trị dự án TS. Trịnh Thùy Anh.
Chương 1: mạng máy tính và Internet
Lập trình ứng dụng MiniChat bằng Java dùng cơ chế xử lý Multithread
1. Quyền Admistrator, quyền Standard hoặc Limited 2. Kiểm tra kết nối mạng nội bộ, Internet 3. Một số nội dung của Quy nội bộ số 72/QyĐ-KTNB 4. L ư u ý.
Các hệ mã truyền thống Cryptography Криптография Trần Nguyên Ngọc
Internet & E-Commerce
Ngôn ngữ lập trình C/C++
GIÁO TRÌNH ĐÀO TẠO TRƯỜNG ĐẠI HỌC SÀI GÒN
SỬ DỤNG EXCEL ĐỂ TRÍCH KHẤU HAO TSCĐ
Đầu tiên chỉ là 1 giao thức đơn giản
CHƯƠNG 9 PHẦN MỀM POWERPOINT
BÀI 4 CÔNG NGHỆ THÔNG TIN VÀ CHUỖI CUNG ỨNG
GIAO DIỆN NGƯỜI DÙNG (GUI)
© 2007 Thomson South-Western
HƯỚNG DẪN CẤU HÌNH SQL EXPRESS TRÊN MẠNG NỘI BỘ
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG C++
Chương 1 : Xây dựng CSDL Giáo viên: Phạm Mỹ Hạnh.
Chương 8 KẾT NỐI VỚI SQL SERVER & ỨNG DỤNG TRÊN C#
Vấn đề ngôn ngữ lập trình
© 2007 Thomson South-Western
OBJECT-ORIENTED ANALYSIS AND DESIGN WITH UML 2.0
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN KHOA VẬT LÝ
Hệ quản trị Cơ sở dữ liệu Giới thiệu
Chương 1: Khái quát về dự án đầu tư.
Ra quyết định kinh doanh
Theo mặc định toàn bộ dung lượng dùng lưu trữ, các thư mục hiện có trong các Partition , các dịch vụ hệ thống đã được chia sẽ cho mọi người được phép sử.
Policy Analysis Tools of the Trade NMDUC 2009.
Cấu hình đơn giản cho Router
Bài giảng môn Tin ứng dụng
Ring ? Bus ? ? Mesh ? Start ?. Ring ? Bus ? ? Mesh ? Start ?
Môn: Lập trình Hướng đối tượng (Object Oriented Programming)
TÀI LIỆU GIẢNG DẠY IC3 GS4 SPARK
GIÁO TRÌNH ĐÀO TẠO TRƯỜNG ĐẠI HỌC SÀI GÒN
Bài 8 (6 tiết): CÂY (TREE) A. CÂY VÀ CÂY NHỊ PHÂN (2 tiết)
HỆ ĐIỀU HÀNH MẠNG.
ỨNG DỤNG HIV INFO 3.0 QUẢN LÝ SỐ LIỆU NGƯỜI NHIỄM HIV/AIDS
File Transfer Protocol (FTP) là cơ chế truyền tin dưới dạng tập tin (file). Thông qua giao thức TCP/IP FTP là dịch vụ đặc biệt vì nó dùng tới 2 port Port.
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
ÔN TẬP Chuyển các số sau từ hệ thập phân sang nhị phân, bát phân, thập lục phân: Chuyển các số sau từ hệ nhị phân.
ÔN TẬP Chuyển các số sau từ hệ thập phân sang nhị phân, bát phân, thập lục phân: Chuyển các số sau từ hệ nhị phân.
ArcObject.
Mảng Bài 7.
BÀI 29: LỌC DỮ LIỆU TỪ DANH SÁCH DỮ LIỆU
Chương 4: FORMS Microsoft Access.
Chaøo möøng quyù thaày coâ ñeán vôùi tieát daïy
Tổng quan về Hệ điều hành
Lớp DH05LN GIÁO VIÊN PHỤ TRÁCH ThS. NGUYỄN QUỐC BÌNH
KỸ NĂNG LUYỆN TRÍ NHỚ ThS. Huỳnh Phạm Ngọc Lâm.
Chương 3. Lập trình trong SQL Server TRIGGER
AUDIO DROPBOX - TUTORIALS
2D Transformations Các phép biến đổi 2D
Company LOGO CĂN BẢN VỀ MẠNG NGUYEN TAN THANH Xem lại bài học tại
Quản trị rủi ro Những vấn đề căn bản Nguyễn Hưng Quang 07/11/2015 NHẬT HOA IC&T.
TRƯỜNG ĐẠI HỌC NGOẠI THƯƠNG CƠ SỞ II TẠI TP. HỒ CHÍ MINH HỘI NGHỊ KHOA HỌC CƠ SỞ II “BÁO CÁO HOẠT ĐỘNG ĐI THỰC TẾ CỦA GIẢNG VIÊN CSII, NĂM HỌC ”
Presentation transcript:

Lập trình MiniChat bằng VC++ dùng cơ chế xử lý sự kiện Nguyễn Quang Hùng E-mail: hungnq2@dit.hcmut.edu.vn Website: www.dit.hcmut.edu.vn/~hungnq/courses.htm HCMC Univ Technology – Faculty of Information Technology

HCMC Univ Technology – Faculty of Information Technology Mục lục Bài tập sau đây cho phép làm quen với qui trình xây dựng 1 chương trình theo giao diện “Dialog based” bằng VC++. Dialog box của chương trình MiniChat client: HCMC Univ Technology – Faculty of Information Technology

Giao diện của ch.trình MiniChat client Cửa sổ nhập thông tin của button “Connect” Cửa sổ nhập thông tin của button “login” HCMC Univ Technology – Faculty of Information Technology

Giao diện của MS. Visual C++ IDE Chạy Microsoft Visual C++từ Start  Programs  Microsoft Visual C++ HCMC Univ Technology – Faculty of Information Technology

Tắt/Mở nhiều cửa sổ làm việc HCMC Univ Technology – Faculty of Information Technology

Tạo new project bằng AppWizard Dùng AppWizard để tạo project: Chọn menu File.New…, cửa sổ sau được hiển thị. Chọn trang Projects, chọn mục MFC AppWizard (exe), chọn thư mục chứa project trong textbox ‘Location’, thí dụ: f:\mmtnc. Nhập tên của project (MiniChatClient) vào textbox “Project name”, như vậy các file tạo ra project này chứa trong thư mục: f:\mmtnc\MiniChatClient HCMC Univ Technology – Faculty of Information Technology

Tạo new project bằng AppWizard (tiếp) Chọn button OK, cửa sổ sau xuất hiện để dạng ứng dụng: Thí dụ chương trình của ta dùng Dialog based, chọn mục “Dialog based”, rồi chọn nút “Next”, cửa sổ sau xuất hiện: HCMC Univ Technology – Faculty of Information Technology

Tạo new project bằng AppWizard (tiếp) Thí dụ chương trình của ta dùng Dialog based, chọn mục “Dialog based”, rồi chọn nút “Next”, cửa sổ sau xuất hiện: Chọn mục “Windows Sockets” rồi hiệu chỉnh lại title của Dialog box rồi chọn “Next” HCMC Univ Technology – Faculty of Information Technology

Tạo new project bằng AppWizard (tiếp) HCMC Univ Technology – Faculty of Information Technology

Tạo new project bằng AppWizard (tiếp) HCMC Univ Technology – Faculty of Information Technology

Tạo new project bằng AppWizard (tiếp) Chọn button Finish để tạo ứng dụng HCMC Univ Technology – Faculty of Information Technology

Tạo new project bằng AppWizard (tiếp) Khi tạo ứng dụng thành công thì một Dialog xuất hiện trong VC++ IDE HCMC Univ Technology – Faculty of Information Technology

Thiết kế giao diện ch.trình MiniChatClient Bắt đầu thiết kế giao diện chương trình, dùng các controls có sẳn ở cửa sổ Control. Để xóa một control: chọn nó rồi chọn cut. Để thêm 1 control, dùng chuột kéo từ toolbox và thả control vào Dialog. Để thêm hay hiệu chỉnh thuộc tính cho control, dời chuột tới nó rồi chọn Properties để hiển thị cửa sổ thuộc tính. HCMC Univ Technology – Faculty of Information Technology

Thiết kế g.diện ct. MiniChatClient (tiếp) Dùng chuột drag các control vào vị trí thích hợp trên Dialogbox HCMC Univ Technology – Faculty of Information Technology

Thiết kế g.diện ct. MiniChatClient (tiếp) Để các phần tử trong Dialogbox dùng font xác định (tiếng Việt), chọn Dialogbox rồi nhấn phải chuột. Cửa sổ thuộc tính sẽ được hiển thị: HCMC Univ Technology – Faculty of Information Technology

Hiệu chỉnh các thuộc tính của control HCMC Univ Technology – Faculty of Information Technology

Hiệu chỉnh các t.t. của control (tiếp) Button “Connect” với tên IDC_CONNECT, “Group” với tên IDC_GROUPREQ, “Login” với IDC_LOGIN, Button “User” với IDC_USERREQ, “Send” với IDC_SENDMSG, “Logout” với IDC_LOGOUT. Text box thông báo cần gởi với IDC_MESG, Listbox “Danh sách nhóm” với IDC_GROUPLIST, Listbox “Danh sách các user trong nhóm” tên IDC_USERLIST, Listbox “Nội dung trao đổi với IDC_CONTENT” HCMC Univ Technology – Faculty of Information Technology

Kết hợp biến và hàm xử lý biến cố với các control Tạo hàm xử lý biến cố cho từng button bằng cách chọn từng button, chọn mục event trong cửa sổ Properties, cửa sổ sau xuất hiện: HCMC Univ Technology – Faculty of Information Technology

Kết hợp biến và hàm xử lý biến cố với các control (tiếp) Phương pháp chính quy để khai báo biến và hàm xử lý biến cố với các phần tử giao diện là dùng menu View.ClassWizard, cửa sổ ClassWizard xuất hiện, trang MessageMap cho phép khai báo các hàm xử lý biến cố: HCMC Univ Technology – Faculty of Information Technology

Kết hợp biến và hàm xử lý biến cố với các control (tiếp) Để tạo các biến dữ liệu kết hợp với các control, chọn project, class chứa biến, trang Member variables, sau đó chọn từng ID phần tử rồi ấn nút button “Add variable”, cửa sổ sau xuất hiện: HCMC Univ Technology – Faculty of Information Technology

Kết hợp biến và hàm xử lý biến cố với các control (tiếp) Kết quả tạo 4 biến kết hợp với 4 phần tử giao diện. HCMC Univ Technology – Faculty of Information Technology

Tạo thêm các hộp thoại từ menu Insert.Resource Chọn menu Insert.Resource để tạo các hộp thoại sau: HCMC Univ Technology – Faculty of Information Technology

Tạo thêm các hộp thoại từ menu Insert.Resource (2) Khuôn mẫu 2 hộp thoại sau: HCMC Univ Technology – Faculty of Information Technology

Giao thức lớp ứng dụng Mini Chat Chức năng: Cho phép nhiều user đăng ký vào các nhóm để trò chuyện với nhau. Mô hình lựa chọn: client/server Server: Quản lý các nhóm và các user của từng nhóm Phân phối chuỗi thông tin từ một user đến các user khác. Client: Giao tiếp với các user Cho phép họ đăng ký nhóm; gởi/nhận thông tin cho nhau. HCMC Univ Technology – Faculty of Information Technology

Giao thức lớp ứng dụng Mini Chat (tiếp) Định nghĩa giao thức dùng cho hệ thống MiniChat: Lệnh GLIST <CRLF> Lệnh ULIST <CRLF> Lệnh LOGIN <tên group>,<tên user> <CRLF> Lệnh SEND <string> <CRLF> Lệnh LOGOU <CRLF> Dạng reply cho tất cả các request: N <chuỗi dữ liệu phụ kèm theo> N = 1: Thành công, N = 0: Thất bại HCMC Univ Technology – Faculty of Information Technology

Giao diện của c.trình MiniChatServer Tương tự tạo chương trình MiniChat Server như sau: HCMC Univ Technology – Faculty of Information Technology

HCMC Univ Technology – Faculty of Information Technology A SAMPLE HCMC Univ Technology – Faculty of Information Technology

MINICHAT SERVER TRÊN VC++ BOOL CMiniChatServerDlg::OnInitDialog() { … // Tao socket moi, neu that bai bao sai ser_sock = socket(AF_INET,SOCK_STREAM,0); if(ser_sock==INVALID_SOCKET) { MessageBox("Khong tao duoc socket"); return TRUE; } // Thiet lap dia chi diem dau mut va bind no voi socket SOCKADDR_IN local_addr; Local_addr.sin_family=AF_INET; local_addr.sin_port=256; local_addr.sin_addr.s_addr=INADDR_ANY; if(bind(ser_sock,(LPSOCKADDR)&local_addr,sizeof(local_addr))== SOCKET_ERROR) { MessageBox("Khong bind socket duoc"); HCMC Univ Technology – Faculty of Information Technology

MINICHAT SERVER TRÊN VC++ (t.t) // Khai bao so yeu cau ket noi dong thoi if(listen(ser_sock,10)==SOCKET_ERROR) { MessageBox("Khong listen duoc"); return TRUE; } // Khai bao nhan du lieu bat dong bo + dong cau noi bat dong bo if (WSAAsyncSelect(ser_sock, m_hWnd, WSA_ACCEPT, FD_ACCEPT) > 0) { MessageBox("Error on WSAAsyncSelect()"); closesocket(ser_sock); … HCMC Univ Technology – Faculty of Information Technology

MINICHAT SERVER TRÊN VC++ (t.t) // Accept 1 yeu cau noi ket void CMiniChatServerDlg::OnAccept(void) { SOCKADDR_IN remote_addr; SOCKET sock; // Cho ket noi int len=sizeof(remote_addr); sock=accept(ser_sock,(LPSOCKADDR)&remote_addr,&len); if(sock==INVALID_SOCKET) { MessageBox("Khong accept duoc"); return; } T_UserRec *puser = new(T_UserRec); puser->sock = sock; puser->next = sock_no_user; sock_no_user = puser; // Khai bao nhan du lieu bat dong bo + dong cau noi bat dong bo if (WSAAsyncSelect(sock, m_hWnd, WSA_RDCLOSE, FD_READ|FD_CLOSE) > 0) { MessageBox("Error on WSAAsyncSelect()"); closesocket(sock); HCMC Univ Technology – Faculty of Information Technology

MINICHAT SERVER TRÊN VC++ (t.t) // Doc vao request va xu ly void CMiniChatServerDlg::Request_Process(SOCKET sock) { int status; char mesg[MSG_LENGTH]; status = recv(sock, mesg, MSG_LENGTH, 0); if (status==0) return; mesg[status] = 0; if (strncmp(mesg,"LOGIN",5)==0) { // login Do_login(sock,mesg); } else if (strncmp(mesg,"LOGOU",5)==0) { // logout Do_logout(sock); } else if (strncmp(mesg,"GLIST",5)==0) { // group list Do_glist(sock); } else if (strncmp(mesg,"ULIST",5)==0) { // user list Do_ulist(sock); } else { // broadcast message Do_broadcastMesg(sock,mesg); } HCMC Univ Technology – Faculty of Information Technology