Đồ Án Thực Hành Đề Tài Lập Trình Socket.pdf

11 0 0
Đồ Án Thực Hành Đề Tài Lập Trình Socket.pdf

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

lOMoARcPSD|38590726 ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN KHOA CÔNG NGHỆ THÔNG TIN -   - ĐỒỒ ÁN THỰC HÀNH TRÌNH ĐỀỀ TÀI: LẬP SOCKET MÔN HỌC: MẠNG MÁY TÍNH Học kỳ I (2020-2021) LỚP: 19CTT2 SV Thực hiện 1: LÊ SỸỸ THUẦỒN MSSV: 19120387 SV Thực hiện 2: TRƯƠNG MINH NHẬT MSSV: 19120318 TP HỒ CHÍ MINH, THÁNG 12 NĂM 2020 MỤC LỤC I Ý tưởng .2 II Các bước cài đặt ứng dụng này .2 III Chạy thử ứng dụng .6 Downloaded by BINH NGUYEN (tailieuso.15@gmail.com) lOMoARcPSD|38590726 IV Tài liệu tham khảo .11 I Ý tưởng Tạo một ứng dụng web cho phép người dùng đăng nhập để xem được thông tn của người tạo nên trang web (2 thành viên trong nhóm thực hiện đôồ án) và cho phép người dùng tải các tập tn từ máy chủ của trang web vêồ máy II Các bước cài đặt ứng dụng này Sử dụng gói MFC để tạo template code Các fle cpp và h được tạo sănẵ , chỉ cầnồ viêết hàm main() vào fle cpp được yêu cầồu (ở đầy là Web_Server.cpp), tạo thêm fle Web_Server.h để khai báo các hàm, các thư viện cầồn thiêết Downloaded by BINH NGUYEN (tailieuso.15@gmail.com) lOMoARcPSD|38590726 Phầồn này đã được viêết sănẵ Phầnồ này đã được viêết săẵn Cài đặt hàm main - Tạo 2 class CSocket là client và server, CSocket server khởi tạo băồng hàm Create với port của giao thức HTTP là port 80 được định nghĩa băồng DEFAULT_PORT ở Web_Server.h Downloaded by BINH NGUYEN (tailieuso.15@gmail.com) lOMoARcPSD|38590726 Port 80 - Khởi tạo 1 thread để làm việc với socket trong thread đó Khởi tạo thread - Sử dụng vòng lặp vô tận để CSocket server luôn lăếng nghe và chầếp nhận tn hiệu từ CSocket client băồng hàm Listen và Accept với sôế kêết nôếi tôếi đa là MAXCONN được định nghĩa trong Web_Server.h - Khởi tạo một con trỏ client_socket kiểu SOCKET*, tách SOCKET từ CSocket client và gán vào con trỏ client_socket băồng hàm Detach Downloaded by BINH NGUYEN (tailieuso.15@gmail.com) lOMoARcPSD|38590726 - Đưa con trỏ client_socket này vào hàm Receive_Send_Thread trong thread để thực hiện việc nhận dữ liệu từ socket và gửi dữ liệu tới socket độc lập với chương trình chính - Vòng lặp têếp tục lặp lại vô tận để nhận CSocket server lăếng nghe và chầếp nhận kêết nôếi từ CSocket client Vòng lặp vô tận cho việc lăếng nghe, chầếp nhận và gửi nhận tn hiệu giữa các CSocket Để được đưa vào hàm Receive_Send_Thread con trỏ client_socket phải ép thành kiểu LPVOID, vào bên trong hàm Receive_Send_Thread, ép kiểu con trỏ client_socket vêồ lại kiểu SOCKET* rôồi gán giá trị của nó cho CSocket Used_ClientSocket Downloaded by BINH NGUYEN (tailieuso.15@gmail.com) lOMoARcPSD|38590726 Sử dụng hàm Receive để nhận dữ liệu từ Used_ClientSocket và lưu vào mảng kí tự receive_bufer với độ dài DEFAULT_BUFFER_LENGTH, hàm Receive trả vêồ sôế byte dữ liệu nhận được cho biêến receive_result Nêếu sôế byte nhận được lớn hơn 0, nhận dữ liệu thành công và têến hành phản hôồi; nêuế sôế byte nhận được bănồ g 0, phía client ngừng gửi dữ liệu, đóng Used_ClientSocket và kêết thúc hàm; nêuế sôế byte nhận được khác hai trường hợp trên, quá trình nhận bị lôẵi, đóng Used_ClientSocket và kêết thúc hàm Quá trình phản hôồi: - Xử lí nội dung request từ client chứa bên trong receive_bufer băồng hàm processRequest để biêết được các thông tn quan trọng như Request method (phương thức request), tài nguyên mà client yêu cầuồ (trong phương thức GET), những dữ liệu mà client gửi tới (thông qua phương thức POST) và chuẩn bị các thông tn cầnồ thiêtế để tạo một response như Status-Code (mã phản hôồi), tên fle tài nguyên mà client yêu cầuồ , loại tài nguyên mà client yêu cầồu,… - Tạo response băồng hàm createResponse, response gôồm 3 phầồn: + Status-Line chứa các thông tn như HTTP version (phiên bản HTTP), Status-Code, Reason- Pharse (mô tả vêồ mã phản hôồi) + Header chứa các thông tn vêồ Connecton, Content-Type, Content-Dispositon, Transfer- Encoding, Locaton, Conten-Length, và một dòng trôếng để kêết thúc phầồn Header + Phầồn Body chứa nội dung cầnồ gửi vêồ cho client thông qua response - Sử dụng hàm Send để gửi response đi từ Used_ClientSocket, hàm Send trả vêồ sôế byte gửi được cho biêến send_result, nêuế send_result nhỏ hơn hoặc băồng 0, việc gửi response thầết bại, ngược lại, gửi response thành công III Chạy thử ứng dụng - Mở tập tn “Web_Server.exe” Downloaded by BINH NGUYEN (tailieuso.15@gmail.com) lOMoARcPSD|38590726 Mở tập tn Web_Server.exe - Mở trình duyệt web và truy cập vào “localhost” Truy cập “localhost” - Tại trang đăng nhập, nhập tên đăng nhập vào mục Username và mật khẩu vào mục Password (mặc định là admin/admin) Nêếu tên đăng nhập và/hoặc mật khẩu không hợp lệ, seẵ phải nhập lại Downloaded by BINH NGUYEN (tailieuso.15@gmail.com) lOMoARcPSD|38590726 Tên đăng nhập không hợp lệ Nêếu tên đăng nhập và/hoặc mật khẩu sai, trang 404 Not Found xuầết hiện Tên đăng nhập và/hoặc mật khẩu sai Downloaded by BINH NGUYEN (tailieuso.15@gmail.com) lOMoARcPSD|38590726 Trang 404 Not Found xuầết hiện Nêếu tên đăng nhập và mật khẩu đúng, trang thông tn vêồ 2 thành viên trong nhóm thực hiện đôồ án hiện ra, tại đầy có nút “DOWNLOAD FILES”, bầếm vào nút này để đênế trang tải tập tn từ máy chủ Thông tn của 2 thành Nhầến vào nút này để viên trong nhóm thực đêến trang tải tập tn hiện - Trang tải tập tn hiện ra với tên các tập tn có thể tải vêồ, kích thước tập tn và các thông tn liên quan Downloaded by BINH NGUYEN (tailieuso.15@gmail.com) lOMoARcPSD|38590726 Các tập tn có thể tải vêồ, bầếm vào tập tn muôến tải để tải vêồ - Bầếm vào tên tập tn muôến tải, hộp thoại “Save as” xuầtế hiện và tên của tập tn tải vêồ được tự động điêồn vào giôếng như tên tập tn ở trên trang tải tập tn, bầếm vào nút “Save” để tải tập tn vêồ máy Chọn vị trí lưu, đặt tên tập tn, nhầến “Save” để lưu Downloaded by BINH NGUYEN (tailieuso.15@gmail.com) lOMoARcPSD|38590726 Tập tn cầnồ tải đã được lưu thành công IV Tài liệu tham khảo Tài liệu vêồ công nghệ web cho lập trình viên: https://developer.mozilla.org/en-US/ CAsyncSocket class: https://docs.microsoft.com/en-us/cpp/mfc/reference/casyncsocket-class?view=msvc-160#detach Transfer-Encoding: chunked https://en.wikipedia.org/wiki/Chunked_transfer_encoding Downloaded by BINH NGUYEN (tailieuso.15@gmail.com)

Ngày đăng: 12/03/2024, 16:34

Tài liệu cùng người dùng

Tài liệu liên quan