1. Trang chủ
  2. » Giáo Dục - Đào Tạo

ĐỒ án lập TRÌNH MẠNG ỨNG DỤNG CHAT và gửi FILE

30 27 2

Đ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

Thông tin cơ bản

Định dạng
Số trang 30
Dung lượng 6,32 MB

Nội dung

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HCM ĐỒ ÁN LẬP TRÌNH MẠNG ỨNG DỤNG CHAT VÀ GỬI FILE Ngành: CÔNG NGHỆ THÔNG TIN Chuyên ngành: CÔNG NGHỆ PHẦN MỀM Giảng viên hướng dẫn : NGUYỄN LÊ VĂN Sinh viên thực hiện: Họ tên Nguyễn Trung Thành Nguyễn Văn Quang Đào Nhật Tín Nguyễn Đình Hùng TP Hồ Chí Minh, 10/2022 MỤC LỤC LỜI MỞ ĐẦU lỜI CẢM ƠN CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1.1Yêu cầu đề tài: 1.2Giới thiệu mơ hình Client/Server: 1.3Giới thiệu giao thức IP/TCP: 1.3.1Giới thiệu TCP 1.3.2Giới thiệu IP 1.3.3Giới thiệu cổng Port 1.3.4Giới thiệu Socket 1.4Lập trình mạng Java: 1.4.1Gói ServerSocket 1.4.2Gói Socket 1.4.3Một số gói , lớp bổ trợ CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ CHƯƠNG TRÌNH 2.1Phân tích yêu cầu : 2.2Phân tích chức : 2.2.1Trên Client 2.2.2Trên Server 2.3 Phân tích thiết kế chương trình: CHƯƠNG 3: TRIỂN KHAI VÀ KẾT QUẢ 3.1Môi trường triển khai: 3.2Kết quả: 3.3Chương trình: 3.3.1Cấu trúc chương trình 3.3.2Chương trình máy Ser 3.3.3 Chương trình máy Client CHƯƠNG 4: PHÂN CÔNG , ĐÁNH GIÁ LỜI MỞ ĐẦU Hiện mạng internet toàn cầu phát triển mạnh, đáp ứng tốt nhu cầu thơng tin khoa học, giải trí, liên lạc, mua bán, quảng cáo v.v người Internet trở thành thành phần thiếu với sống đại Về chất, Internet chẳng qua hệ thống mạng, liên kết máy tính toàn giới lại theo chuẩn chung Với phạm vi nhỏ tương tự, có mạng khác WAN, LAN , mơ hình ứng dụng nhiều tiện ích khác Với mục tiêu sinh viên trường với kiến thức tốt mạng, lập trình ứng dụng mạng để làm nhiều việc khác nhau, môn lập trình mạng đời Vì vậy, ngày hơm nay, lúc nhóm chúng em học lập trình mạng, tìm đề tài với tên “ỨNG DỤNG CHAT VÀ GỬI FILE”, điều giúp nhóm chúng em thực hành để có hội hiểu rõ mạng, lập trình mạng – lĩnh vực lập trình thú vị Ứng dụng hoạt động dựa vào giao thức IP/TCP để truyền liệu hai máy khác nhau, cụ thể máy server để cung cấp dịch vụ nhiều máy client sử dụng dịch vụ máy server cung cấp người dùng sử dụng Ngơn ngữ lập trình ngơn ngữ Java (Phiên JAVA SE 8) Java ngơn ngữ sử dụng để viết ứng dụng chạy hầu hết thiết bị (ở ta quan tâm tới thiết bị có hỗ trợ mạng) Trọng điểm, có khả trội Java cung cấp mà ta sử dụng : - Lập trình đa tuyến trình (Cùng ứng dụng chạy nhiều tiến trình song song với thay phải tiến trình đợi tiến trình kết thúc thực hiện) - Java tảng chạy nhiều loại thiết bị với nhiều hệ điều hành khác nên có phạm vi ứng dụng rộng rãi LỜI CẢM ƠN Để hoàn thành tốt đồ án lần chúng em xin chân thành cảm ơn thầy Nguyễn Lê Văn hướng dẫn chúng em suốt q trình mơn học q trình làm đồ án lần Bên cạnh để hồn thành đồ án lần chúng em nhận nhiều hỗ trợ bạn bè quý thầy Nhưng điều kiện thời gian, chúng em khó bỏ qua thiếu sót Chúng em mong nhận thông cảm quý thầy góp ý, bảo quý thầy cô để sản phẩm trở nên tốt Chúng em xin chân thành cảm ơn! CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1.1 Yêu cầu đề tài: Viết chương trình Client/Server cho phép nhiều người sử dụng gửi tin nhắn cho dạng phòng chat room có thêm chức gửi file 1.2 Giới thiệu mơ hình Client/Server: Server hiểu máy chủ, thường hệ thống máy lớn, có xử lý mạnh, có khả hoạt động đáng tin cậy, có khả lưu trữ liệu lớn, chuyên quản lý tài nguyên (chủ yếu sở liệu), cung cấp dịch vụ mạng cho máy khách (client) sử dụng Bình thường chạy suốt thời gian thực sẵn sàng chấp nhận yêu cầu kết nối yêu cầu dịch vụ khác từ máy khách (Client) Client máy khách, thường sử dụng người dùng cuối Nó hoạt động dựa việc sử dụng dịch vụ mà máy server cung cấp để thực công việc mà người dùng cuối mong muốn Quy trình hoạt động mơ hình lặp lại trình sau : - Client gửi yêu cầu lên server - Server nhận yêu cầu xử lý phản hồi lại client Mơ hình Client/Server 1.3 Giới thiệu giao thức IP/TCP: 1.3.1 Giới thiệu TCP Giao thức TCP (Transmission Control Protocol) giao thức hướng kết nối (connection-oriented), địi hỏi thiết lập kết nối trước bắt đầu gửi liệu kết thúc kết nối việc gửi liệu hoàn tất theo thứ tự: thiết lập kết nối, truyền liệu kết thúc kết nối 1.3.2 Giới thiệu IP IP địa máy tính mạng, dựa vào địa IP giao thức TCP truyền liệu xác từ máy qua máy thơng qua hệ thống mạng Ở mạng, máy tính sẻ có địa IP khác nhau, từ địa IP biết máy mạng ngược lại 1.3.3 Giới thiệu cổng Port Với IP, giao thức TCP truyền liệu xác từ máy qua máy mà chưa thể truyền xác đến ứng dụng máy Hiện nay, hệ thống máy thông thường hoạt động theo chế độ đa nhiệm, nghĩa có nhiều ứng dụng chạy lúc có nhiều ứng dụng sử dụng dịch vụ mạng Yêu cầu, máy chủ A truyền liệu cho ứng dụng u máy B máy B phải đảm bảo liệu phải đến ứng dụng u, ứng dụng v Để thực điều máy chủ A truyền liệu liệu có thành phần thông tin giúp máy B xác định ứng dụng u Phần thơng tin địa port máy B, hiểu lỗ cắm ảo máy B mà ứng dụng u đăng ký để độc quyền sử dụng nhằn nhận liệu từ máy chủ A Trên thực tế, địa port số nguyên byte có giá trị từ đến 65535 Nó có đặc điểm : - Giá trị từ đến 1023 cổng phổ biến dành cho ứng dụng thông dụng http: 80, mail : 25, ftp : 21, Telnet 23 Các giá trị cịn lại sử dụng linh hoạt - Mỗi cổng thời điểm sử dụng cho tối đa ứng dụng Ví dụ ứng dụng sử dụng cổng 55 ứng dụng khác khơng thể sử dụng cổng 55 chừng ứng dụng trước chưa có đóng cổng 55 lại 1.3.4 Giới thiệu Socket - Socket khái niệm để định vị dịch vụ máy tính mạng kết hợp hai khái niệm IP Port lại - Socket có nhiệm vụ sau : Gắn cổng máy Lắng nghe kết Kết nối/Đóng kết nối đến máy tính xa qua cổng gắn Gửi/nhận liệu Lắng nghe liệu đến - Thực chất, Socket chẳng qua kết hợp địa IP máy tính cổng Port mà ứng dụng sử dụng Chính kết hợp mà trở thành khái niệm mà từ đó, ngơn ngữ lập trình có chứa gói, giao diện lập trình (API) để hỗ trợ nhà lập trình dễ dàng việc lâp trình liên quan đến mạng qua giao thức TCP Điển hình ngơn ngữ Java mà nhóm chúng em giới thiệu sau 1.4 Lập trình mạng Java: 1.4.1 Gói ServerSocket Nhiệm vụ chính: Mở cổng kết nối server, sẵn sàng hoạt động cổng public Socket(int port) : Tạo cổng kết nối cổng port Lắng nghe, chờ đợi yêu cầu kết nối cổng kết nối có yêu cầu public accept():Chấp nhận kết nối trả đối tượng Socket mô tả nguồn kết nối đến Tạo luồng liệu vào để truyền liệu cổng đến socket máy khách (Đây chức quan trọng nhất) getInputStream() : Trả luồng mà nhập liệu vào getOutputStream() : Trả luồng ghi liệu Đóng kết nối khơng sử dụng close() : Đóng kết nối khơng cần 1.4.2 Gói Socket Nhiệm vụ chính: Kết nối tới máy chủ thơng qua địa IP số hiệu cổng máy chủ Public Socket(InetAddress address, int port) Tạo luồng liệu vào Public OutputStream getOutputStream() ; Public InputStream getInputStream() ; Đóng kết nối Public void Close(); Đóng kết nối 1.4.3 Một số gói , lớp bổ trợ khác a Gói Swing, awt.event : tạo giao diện người dùng b Gói Runnable, Thread : Hỗ trợ đa tiến trình c Gói java.io : Cung cấp lớp vào liệu CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ CHƯƠNG TRÌNH 2.1 Phân tích u cầu : - Viết chương trình cho phép chat room nhiều người qua mạng 2.2 Phân tích chức : 2.2.1 Trên Client - Đăng nhập vào server với nickname người dùng tự chọn - Nhận danh sách nick online server - Gửi tin nhắn tới người, nhiều người tất người online khác server - Thực gửi file đến máy client khác - Nhận tin nhắn từ nickname khác gửi tới - Đăng xuất tài khoản 2.2.2 Trên Server - Tạo cổng kết nối sẵn sàng đón nhận kết nối từ client - Xử lý yêu cầu đăng nhập từ client Nếu nickname chưa có đăng nhập từ trước cho đăng nhập Nếu có đăng nhập từ trước với nickname cho người đăng nhập trước phải đăng xuất cho người đăng nhập vào - Trả danh sách nickname online cho nickname có yêu cầu - Nhận tin nhắn từ nickname chuyển tiếp tới nickname khác tương ứng theo yêu cầu nickname gửi - Loại nickname nickname yêu cầu đăng xuất - Xác nhận gửi file đến nickname yêu cầu - Cho phép người sử dụng theo dõi thành viên đăng nhập, đăng xuất 2.3 Phân tích thiết kế chương trình: SERVER CLIENT Main Form Login Form Main Form Server Thread Client Thread Socket Thread 10 16 Nút “khởi động máy chủ” : Nút “Dừng máy chủ” : b File ServerThread.java Khai báo thư viện : Khai báo ban đầu khai báo hiển thị hình appendMessage : Phương thức run() : 17 Phương thức stop() : c File SocketThread.java Khai báo thư viện : 18 Khai báo ban đầu, thiết lập luồng truyền liệu Socket DataInputStream : Thiết lập kết nối : 19 d File OnlineListThread.java Khai báo thư viện: Khai báo thiết lập ban đầu : Khai báo void run() : 20 3.3.3 Chương trình máy Client a LoginForm.java Hàm kết nối đến Server người dùng click vào nút “Đăng nhập” : 21 b MainForm.java Khai báo thư viện : Khai báo ban đầu : 22 Thiết lập kết nối đến Server : Hàm danh sách online : 23 c File ClientThread.java Khai báo thư viện : Khai báo ban đầu, khởi tạo ClientThread thiết lập DataInputStream : 24 d File SendFile.java Khai báo ban đầu : Phương thức gọi đến người dùng click vào menu “Gửi File”, sau kết nối đến Server bắt đầu sẵn sàng để gửi file : 25 Phương thức SendFileThread gửi yêu cầu chuyển liệu đến Server : Code nút gửi file người dùng nhấn : 26 e File SendingFileThread.java Thiết lập ban đầu : Các tiến trình xử lý : 27 CHƯƠNG 4: PHÂN CÔNG , ĐÁNH GIÁ STT MSSV/ Họ tên Nội dung công việc thực Tự đánh giá điểm tỉ lệ Tham gia làm báo cáo, powerpoint, làm chức ServerThread, 1911064960 Nguyễ SoundEffect, MessageStyle, 25% ClientThread n Văn Quang Tham gia làm báo cáo, powerpoint, làm giao diện cho form đăng nhập, form chat, form gửi file Làm chức 1911065665 Nguyễn OnlienListThread, chức 25% form đăng nhập Trung Thành Tham gia làm báo cáo, powerpoint, làm chức cho form main máy chủ, chức cho form 25% SendFile, SendingFileThread 1911064815 Nguyễ n Đình Hùng 1911061039 Đào Nhật Tín Tham gia làm báo cáo, powerpoint, làm giao diện form máy chủ Làm chức ReceivingFileThread, MainForm Client, SocketThread 25% 28 29 ... tốt mạng, lập trình ứng dụng mạng để làm nhiều việc khác nhau, mơn lập trình mạng đời Vì vậy, ngày hơm nay, lúc nhóm chúng em học lập trình mạng, tìm đề tài với tên ? ?ỨNG DỤNG CHAT VÀ GỬI FILE? ??,... Các giá trị cịn lại sử dụng linh hoạt - Mỗi cổng thời điểm sử dụng cho tối đa ứng dụng Ví dụ ứng dụng sử dụng cổng 55 ứng dụng khác khơng thể sử dụng cổng 55 chừng ứng dụng trước chưa có đóng... Port mà ứng dụng sử dụng Chính kết hợp mà trở thành khái niệm mà từ đó, ngơn ngữ lập trình có chứa gói, giao diện lập trình (API) để hỗ trợ nhà lập trình dễ dàng việc lâp trình liên quan đến mạng

Ngày đăng: 22/12/2022, 05:06

w