1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bài tập lớn mạng máy tính đề tài ứng dụng nhắn tin văn bản

16 0 0

Đ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

Mục tiêu bài tốn− Dùng ngơn ngữ Java để xây dựng 1 trương trình Chat qua mạng theo môhình Client/Server.− Tạo ra được 1 chương trình mà các Client kết nối với nhau thông quaServer.− Clie

lOMoARcPSD|39150642 HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG KHOA CÔNG NGHỆ THÔNG TIN BÀI TẬP LỚN MẠNG MÁY TÍNH LỚP 08 Nhóm: 05 ĐỀ TÀI: Ứng dụng nhắn tin văn bản 1 Hà Quang Minh B21DCCN523 2 Nguyễn Thị Thùy Linh B21DCCN487 3 Lê Đức Nam B21DCCN547 4 Phạm Việt Quân B21DCCN104 Downloaded by ANH BACH (bachvan15@gmail.com) lOMoARcPSD|39150642 Hà Nội 2023 Downloaded by ANH BACH (bachvan15@gmail.com) lOMoARcPSD|39150642 I Giới thiệu bài toán 1 Mục tiêu bài toán − Dùng ngôn ngữ Java để xây dựng 1 trương trình Chat qua mạng theo mô hình Client/Server − Tạo ra được 1 chương trình mà các Client kết nối với nhau thông qua Server − Client này có thể gửi tin nhắn tới Client khác 2 Giải quyết bài toán − Cơ sở dữ liệu ● Dữ liệu (bao gồm tin nhắn dạng văn bản, ảnh, File, Icon, Emoji) Client này trao đổi với Client khác trước hết được gửi cho Server, Server chuyển dữ liệu lên cơ sở dữ liệu ● Server là thành phần trung gian lấy dữ liệu từ Database và chuyển cho Client cần nhận − Giao thức TCP/IP − Socket trong java − TCP/IP cho phép các máy tính trong mạng TCP/IP có thể tạo ra các kết nối để trao đổi thông tin với nhau Với 1 địa chỉ IP + 1 cổng TCP sẽ tạo thành một cầu nối và Socket chính là một giao diện lập trình trên các cầu nối đó − (1 IPAddress+ 1 Port TCP = 1 Socket) − Khi các máy tính muốn trao đổi thông tin với nhau thì các máy phải có cùng một Socket Một máy được coi là Server, nó mở ra một Socket, lắng nghe yêu cầu và là thành phần trung gian kết nối giữa Client và Database Các máy còn lại được coi là Client, nó gọi cho Server Socket để bắt thiết lập một kết nối Để thiết lập được kết nối cần có địa chỉ của máy đích (Destination IP Address) và một cổng TCP (TCP port) − Phương thức truyền tin trong Java: − Nó sử dụng phương thức truyền tin có kết nối thông qua 2 đối tượng là: SocketIOClient (Client) và SocketIOServer (Server) Tạo 1 SocketIOClient sử dụng để kết nối tới 1 SocketIOServer Downloaded by ANH BACH (bachvan15@gmail.com) lOMoARcPSD|39150642 − SocketIOClient được tạo ra thông qua một class Model_Client và import com.corundumstudio.socketio.SocketIOClient cùng với sử dụng 1 hàm gán: this.client =client − Để tạo ra một ServerSocket sử dụng câu lệnh dạng: Configuration config = new Configuration(); SocketIOServer server = new SocketIOServer(config); − Mô hình Client/Server: II Chi tiết hệ thống 1 Thiết kế giao diện người dùng - Bọn em đã sử dụng ngôn ngữ java với các tính năng của java Swing để phát triển giao diện Java Swing cung cấp một loạt các thành phần và tính năng để Downloaded by ANH BACH (bachvan15@gmail.com) lOMoARcPSD|39150642 xây dựng giao diện người dùng tương tác Thành phần giao diện đa dạng: Java Swing cung cấp các thành phần giao diện như JButton, JLabel, JTextField, JCheckBox, JRadioButton, JComboBox, JList, JTable, và nhiều hơn nữa Java Swing cũng cung cấp một kiến trúc sự kiện mạnh mẽ, và có thể xử lý các sự kiện như nhấp chuột, nhấn phím và thay đổi trạng thái của các thành phần giao diện Vì vậy chúng em có thể thiết kế được giao diện nhắn tin cho người dùng với các thành phần sau: 2 Cơ sở lý thuyết a Cơ sở dữ liệu - Bọn em sử dụng JDBC để kết nối và tương tác với cơ sở dữ liệu MySQL, JDBC giúp thực thi các truy vấn SQL, gửi và nhận dữ liệu từ cơ sở dữ liệu, và xử lý kết quả trả về từ các truy vấn - Tạo 1 lớp DatabaseConnection để kết nối và xử lý cơ sở dữ liệu, quản lý kết nối cơ sở dữ liệu và xử lý lỗi liên quan đến cơ sở dữ liệu Downloaded by ANH BACH (bachvan15@gmail.com) lOMoARcPSD|39150642 ● getInstance(): Phương thức này được sử dụng để trả về một thể hiện duy nhất của DatabaseConnection thông qua mô hình thiết kế singleton Nếu không có thể hiện nào được tạo, nó sẽ tạo một thể hiện mới và trả về nó ● connectToDatabase(): Phương thức này được sử dụng để kết nối đến cơ sở dữ liệu MySQL thông qua JDBC Nó sử dụng thông tin về máy chủ, cổng, tên cơ sở dữ liệu, tên người dùng và mật khẩu để thiết lập kết nối ● getConnection(): Phương thức này trả về đối tượng Connection hiện tại, cho phép các lớp khác trong ứng dụng sử dụng kết nối cơ sở dữ liệu ● setConnection(Connection connection): Phương thức này được sử dụng để thiết lập đối tượng Connection cho DatabaseConnection - Để kết nối và làm việc với một cơ sở dữ liệu sử dụng JDBC, cần thông tin về máy chủ cơ sở dữ liệu, cổng, tên cơ sở dữ liệu, tên người dùng và mật khẩu b Giao thức − Giao thức TCP: Là giao thức hướng kết nối, nó cung cấp một hoạt động truyền tin tin cậy TCP chịu trách nhiệm phân chia dữ liệu gửi thành các Downloaded by ANH BACH (bachvan15@gmail.com) lOMoARcPSD|39150642 segment tại máy gửi và lắp ghép các segment lại tại máy đích, trong quá trình truyền có thể truyền lại bất cứ segment nào nếu máy đích chưa nhận được c Mô hình Client Server − Các ứng dụng mạng thường hoạt động theo mô hình client/server như thư điện tử, truyền nhận tập tin, game online, Mô hình gồm một chương trình đóng vai trò là client và một chương trình đóng vai trò là server Hai chương trình này sẽ giao tiếp với nhau thông qua internet Server đóng vai trò cung cấp dịch vụ Chương trình này luôn lắng nghe các yêu cầu từ phía client, sau đó tính toán và trả lại kết quả tương ứng Client cần một dịch vụ và gởi yêu cầu dịch vụ tới server và đợi đáp trả từ server Như vậy, quá trình trao đổi dữ liệu giữa client/server bao gồm: ● Truyền một yêu cầu từ chương trình Client tới chương trình Server ● Yêu cầu Server xử lý ● Truyền đáp ứng cho Client − Mô hình truyền tin này thực hiện truyền hai thông điệp qua lại giữa Client và Server một cách đồng bộ hóa Server nhận thông điệp từ Client thì nó phát ra yêu cầu Client chuyển sang trạng thái chờ cho tới khi Client nhận được thông điệp đáp ứng do Server gửi về Mô hình Client/Server thường được cài đặt dựa trên các thao tác cơ bản là gửi(send) và nhận (receive) d Lập trình Socket Downloaded by ANH BACH (bachvan15@gmail.com) lOMoARcPSD|39150642 − Socket là gì? Sockets cung cấp một interface để lập trình mạng tại tầng Transport Một socket là một end-point của một liên kết giữa hai ứng dụng Ngày nay, Socket được hỗ trợ trong hầu hết các hệ điều hành như MS Windows (WinSock), Linux và được sử dụng trong nhiều ngôn ngữ lập trình khác nhau: như C, C++, Java, Visual Basic, C#, Windows Socket Application Programming Interface (Winsock API) là một thư viện các hàm socket − Winsock hỗ trợ các lập trình viên xây dựng các ứng dụng mạng trên nền TCP/IP − Xây dựng ứng dụng Client-Server với Socket − Khi xây dụng một ứng dụng mạng, chúng ta thực hiện các bước sau: 1 Xác định kiến trúc mạng: Client – Server, Peer-to-Peer 2 Giao thức sử dụng tầng Transport: TCP, UDP 3 Các port sử dụng ở Server và Client 4 Giao thức tầng ứng dụng khi trao đổi dữ liệu giữa hai end-host 5 Lập trình - Lớp Service được sử dụng để quản lý việc thiết lập và quản lí máy chỉ SocketIO Sử dụng 2 lớp ServiceUser và ServiceFile để xử lý các yêu cầu từ người dùng và tương tác với cơ sở dữ liệu - Phương thức startServer( ) để khởi động máy chủ SocketIO, khởi tạo SocketIOServer và lắng nghe các sự kiện từ client và thực hiện các hành động tương ứng Downloaded by ANH BACH (bachvan15@gmail.com) lOMoARcPSD|39150642 - Máy chủ SocketIO lắng nghe các sự kiện như "register", "login", "list_user", "send_to_user", "send_file", "get_file", "reques_file", và xử lý chúng bằng cách gọi các phương thức tương ứng trong ServiceUser và ServiceFile đồng thời lắng nghe sự kiện kết nối và ngắt kết nối từ các Client và gửi thông báo về trạng thái kết nối đến các Client khác thông qua sự kiện "user_status" 1 Mô tả ứng dụng và các tính năng a Giới thiệu chung − Ứng dụng được xây dựng nhằm mục đích các máy nhắn tin với nhau, có các tính năng gửi file, ảnh, Icon và Emoji cho nhau − Cơ sở dữ liệu được dùng để lưu trữ thông tin người dùng: bao gồm tên đăng nhập, mật khẩu, thông tin cá nhân, Lưu trữ tin nhắn được gửi và nhận trong ứng dụng chat Tin nhắn có thể được lưu trữ theo thứ tự thời gian, kèm theo thông tin người gửi và người nhận Quản lý trạng thái trực tuyến Khi người dùng đăng nhập hoặc đăng xuất, trạng thái trực tuyến của họ có thể được cập nhật trong cơ sở dữ liệu, cho phép người dùng khác biết ai đang trực tuyến và có thể gửi tin nhắn trực tiếp − Client: Khi máy Client kết nối vào Server thì Client sẽ nhận được các đoạn thông báo được gửi bởi Server và phát ra tin nhắn ở phía client − Server: Server nhận các đoạn chat từ Client này, đưa lên Database, khi Client này gửi đoạn chat, Client còn lại cũng sẽ gửi lệnh nhận tin nhắn, Server lấy dữ liệu từ Database và bắt đầu gửi dữ liệu cho Client kia Server sẽ biết được danh sách các client đang kết nối tới mình (mỗi client kết nối sẽ được hiển thị lên bảng tại server) Server sẽ biết được thông tin chi tiết của từng Client và gửi danh sách tên cho các client còn lại b Kiến trúc ứng dụng Downloaded by ANH BACH (bachvan15@gmail.com) lOMoARcPSD|39150642 − Phía Server: ● Lắng nghe và chấp nhận kết nối từ Client ● Nhận và gửi thông điệp cho Client thông qua việc lấy dữ liệu từ Database − Phía Client: ● Kết nối và gửi thông điệp cho Server III Thử nghiệm - Chương trình gồm 3 thành phần: Client, Server và Database Downloaded by ANH BACH (bachvan15@gmail.com) lOMoARcPSD|39150642 - Cần cài đặt MySql phiên bản 5.6 Kết nối database với port: 3305 và chạy file scripts của SQL Downloaded by ANH BACH (bachvan15@gmail.com) lOMoARcPSD|39150642 - Đầu tiên để chương trình chạy được cần phải chạy Main ở folder Server trước Khi Server khởi động thành công sẽ hiển thị dòng chữ “Server has Start on port” + PORT_NUMBER Downloaded by ANH BACH (bachvan15@gmail.com) lOMoARcPSD|39150642 - Sau đó Main ở folder Chat-Application để mở giao diện đăng nhập vào hệ thống chat - Nếu đã có tài khoản nhập tên tài khoản và mật khẩu, màn hình server sẽ hiển thị dòng chữ “One Client connected” - Nếu chưa có tài khoản, chuyển sang màn hình đăng ký, nhập tên tài khoản và mật khẩu để đăng ký, khi đó server sẽ cập nhật tên tài khoản, mẩu khẩu và hiển thị lên màn hình - Sau khi đăng nhập thành công sẽ vào giao diện chat, sẽ có 1 khung hiển thị những người có trong nhóm và những người đang online Downloaded by ANH BACH (bachvan15@gmail.com) lOMoARcPSD|39150642 - Để chat, Client sẽ nhấp vào Client đang online còn lại và gửi tin nhắn - Chat-application còn có các tính năng gửi file,emoji và cả ảnh Downloaded by ANH BACH (bachvan15@gmail.com) lOMoARcPSD|39150642 IV Bắt gói tin với Wireshark - - Server sử dụng port 9999 - Gói tin của server gửi tin đến client có port là 61413 Downloaded by ANH BACH (bachvan15@gmail.com) lOMoARcPSD|39150642 V Kết luận 1 Kết quả đạt được - Mô phỏng được mô hình Client – Server - Thực hiện: Đăng nhập, danh sách online, chat giữa 2 thành viên, gửi file, ảnh, icon, emoji 2 Hạn chế và hướng phát triển - Chương trình còn 1 số lỗi - Vẫn còn nhiều chức năng để cải thiện - Sẽ cải thiện thêm 1 số tính năng và thiết kế lại giao diện để bắt mắt hơn Source Code: https://github.com/linhthuynguyen612/Chat-application Downloaded by ANH BACH (bachvan15@gmail.com)

Ngày đăng: 25/03/2024, 17:26

Xem thêm:

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w