ĐỀ TÀI CÓ DEMO: AI CẦN LIÊN HỆ MÌNH ĐỂ LẤY CODE NHÉ :01263751380 A TÂN 1.LÝ DO CHỌN ĐỀ TÀI Như chúng ta đã biết, ứng dụng công nghệ thông tin đã là một phần tất yếu trong thế giới hiện đại này. Do vậy, công nghệ thông tin hiện tại là một ngành khoa học rất phát triển và cực kỳ quan trọng vì nó được ứng dụng cho hầu hết các ngành quan trọng khác, có sự ảnh hưởng trực tiếp tới sự phát triển kinh tế của mỗi Quốc gia. Hai lĩnh vực phổ biến và quan trọng nhất đó là phần cứng và phần mềm. Trong các ứng dụng về phần mềm, ứng dụng để giúp người sử dụng có thể truy cập từ xa , truy cập đồng thời cùng lúc và dữ liệu được tập trung , thuận tiện cho việc quản lý cũng như việc truy cập của tất cả mọi người.Môn “Lập trình mạng” mà chúng ta được học cũng không nằm ngoài mục đích đó. Trong môn này, ứng dụng ClientServer là được xem là quan quan trọng trong việc xây dựng chương trình hoàn chỉnh. Đề tài: “Tìm hiểu và sử dụng kỹ thuật lập trình Socket xây dựng chương trình tư vấn và tuyển sinh cao đẳng, đại học theo mô hình Client – Server” cũng thực hiện theo mô hình ClientServer giúp cho người dùng có các thông tin cơ bản về kì thi. Mục tiêu của đề tài là giúp chúng em vận dụng các kiến thức đã được học ở môn lập trình mạng để xây dựng ứng dụng hoàn chỉnh.Tuy nhiên với kiến thức còn nhiều hạn chế nên trong quá trình xây dựng và hoàn thành đề tài môn học này, chúng em còn mắc phải nhiều thiếu sót, hạn chế do vậy mong được sự chỉ bảo của thầy cô, cùng các bạn để đề tài được hoàn thiện về nội dung và hình thức.Chúng em xin chân thành cảm ơn.
TRƯỜNG ĐẠI HỌC QUẢNG NAM KHOA CÔNG NGHỆ THÔNG TIN - Tiểu luận: HỌC PHẦN LẬP TRÌNH MẠNG Tên đề tài: TÌM HIỂU VÀ SỬ DỤNG KỸ THUẬT LẬP TRÌNH SOCKET XÂY DỰNG CHƯƠNG TRÌNH TƯ VẤN VÀ TUYỂN SINH CAO ĐẲNG, ĐẠI HỌC THEO MÔ HÌNH CLIENT – SERVER Giảng viên: ThS Nguyễn Văn Khương Nhóm sinh viên thực hiện: - Nguyễn Văn Tân - Huỳnh Thanh Tùng - Hồ Văn Quyền - Hồ Thị Hạnh - Bùi Thị Xuân Hương Lớp: DT13CTT02 Quảng Nam, tháng 11 năm 2016 Phần MỞ ĐẦU LÝ DO CHỌN ĐỀ TÀI Như biết, ứng dụng công nghệ thông tin phần tất yếu giới đại Do vậy, công nghệ thông tin ngành khoa học phát triển quan trọng ứng dụng cho hầu hết ngành quan trọng khác, có ảnh hưởng trực tiếp tới phát triển kinh tế Quốc gia Hai lĩnh vực phổ biến quan trọng phần cứng phần mềm Trong ứng dụng phần mềm, ứng dụng để giúp người sử dụng truy cập từ xa , truy cập đồng thời lúc liệu tập trung , thuận tiện cho việc quản lý việc truy cập tất người Môn “Lập trình mạng” mà học không nằm mục đích Trong môn này, ứng dụng Client-Server xem quan quan trọng việc xây dựng chương trình hoàn chỉnh Đề tài: “Tìm hiểu sử dụng kỹ thuật lập trình Socket xây dựng chương trình tư vấn tuyển sinh cao đẳng, đại học theo mô hình Client – Server” thực theo mô hình Client-Server giúp cho người dùng có thông tin kì thi Mục tiêu đề tài giúp chúng em vận dụng kiến thức học môn lập trình mạng để xây dựng ứng dụng hoàn chỉnh Tuy nhiên với kiến thức nhiều hạn chế nên trình xây dựng hoàn thành đề tài môn học này, chúng em mắc phải nhiều thiếu sót, hạn chế mong bảo thầy cô, bạn để đề tài hoàn thiện nội dung hình thức Chúng em xin chân thành cảm ơn • • • MỤC TIÊU CỦA ĐỀ TÀI Tìm hiểu lập trình Socket Xây dựng chương trình tư vấn tuyển sinh cao đẳng, đại học Từ giúp thí sinh chọn trường, ngành nghề phù hợp với khả ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU Đối tượng nghiên cứu: Mô hình Client – Server • Phạm vi nghiên cứu: Nghiên cứu vấn đề xoay quanh việc lập trình Socket.Từ xây dựng xây dựng chương trình tư vấn tuyển sinh cao đẳng, đại học theo mô hình Client – Server 3 PHƯƠNG PHÁP NGHIÊN CỨU Thu thập thông tin, nghiên cứu tài liệu liên quan đến đề tài Tham khảo sách, giảng từ Internet Phần NỘI DUNG NGHIÊN CỨU Chương 1: CƠ SỞ LÝ THUYẾT 1.1 1.1.1 1.1.1.1 MÔ HÌNH CLIENT – SERVER Kiến trúc Client – Server Tổng quan Kiến trúc Client – Server sử dụng hệ thống phân tán bao gồm hai thành phần riêng biệt Server đóng vai trò phục vụ cung cấp chức Client đóng vai trò người tiêu thụ sử dụng chức Thông thường hai thành phần kết nối với qua mạng, với client bên chủ động tạo kết nối gửi yêu cầu đến Server, Server thụ động lắng nghe hồi đáp yêu cầu Mô hình Client – Server đơn giản gồm Server phục vụ cho nhiều Client đồng thời, gọi kiến trúc hai lớp Một ví dụ phổ biến cho ứng dụng Client – Server chương trình chat email thông dụng Hình Mô hình Client-Server 1.1.1.2 Các ưu điểm kiến trúc Client – Server • Quản lý tập trung: liệu lưu trữ tập trung Server thay nằm rải rác nhiều máy, giúp đơn giản hóa việc truy xuất cập nhật liệu • Dễ bảo trì: nhờ khả quản lý tập trung mà công việc bảo trì trở nên nhẹ nhàng phần lớn việc bảo trì cần thực Server Trong trường hợp hệ thống có nhiều Server với thiết bị dự phòng, trình bảo trì (như sửa chữa, thay Server) diễn hoàn toàn suốt với phía Client • Bảo mật liệu tập trung Server đồng nghĩa với việc kiểm soát dễ dàng Hình Mô hình hệ thống Email theo cấu trúc Client-Server 1.1.2 Ứng dụng theo mô hình Client – Server 1.1.2.1 Cách hoạt động Các tiến trình Clients Servers chạy trạm (host) trạm khác đối tượng logic tách biệt liên lạc với qua mạng để thực công việc Trong đó: • Server: quản lý nguồn tài nguyên, nhận request từ Clients để cung cấp phân phối tài nguyên cho Clients • Client: chương trình giao tiếp với người sử dụng, có nhiệm vụ gửi request cho Server thể việc tiếp nhận tài nguyên Client: Khởi tạo liên lạc với Server trước Yêu cầu dịch vụ từ Server Server: Chấp nhận yêu cầu tạo kết nối với Client Tính toán cung cấp dịch vụ theo yêu cầu từ Client Hình Cách hoạt động mô hình Client-Server 1.1.2.2 Đặc trưng mô hình ứng dụng Client – Server - Hoạt động theo kiểu giao thức bất đối xứng - Thể quan hệ chiều Client Server - Client bắt đầu phiên hội thoại cách yêu cầu dịch vụ - Server sẵn sang chờ yêu cầu từ Client Hình Giao thức hoạt động bất đối xứng tiến trình Client-Server - Chia sẻ tài nguyên: Một Server chia sẻ tài nguyên cho nhiều Client lúc - Server có khả điều phối truy nhập Client đến tài nguyên dùng chung 1.2 LẬP TRÌNH VỚI GIAO THỨC TCP, MULTI THREADING 1.2.1 Tổng quan Trong mô hình ứng dụng Client-Server, thông thường, chương trình chạy máy Client gửi requests tới chương trình (thường gọi chương trình Server) chạy máy Server Các gói request bao gồm dịch vụ mạng cung cấp tầng lớp giao vận (transport layer), phần kiến trúc phân tầng mạng, thường gọi TCP/IP (Transport Control Protocol/Internet Protocol) Tầng giao vận bao gồm hai loại giao thức TCP UDP(User Datagram Protocol) Hình Tầng vận chuyển Transport với TCP/IP TCP giao thức truyền hướng đối tượng thực luồng liệu tin cậy hai máy tính có thiết lập kết nối Ví dụ ứng dụng sử dụng dịch vụ HTTP, FTP Telnet 1.2.2 IP, cổng Port Socket Mọi máy tính môi trường Internet xác định địa IP 4byte mà viết dạng chấm 128.250.25.158, byte giá trị không dấu từ đến 255 Nhưng cách đặt tên cho địa không thân thiện chẳng nói lên điều nội dung thật khó để nhớ dãy byte Do đó, địa IP xác định tên www.google.com.vn dễ nhớ Hình Ánh xạ miền Thông thường, máy tính có địa IP Tuy nhiên, máy tính thường cần kết nối cung cấp loại kiểu dịch vụ để thông báo cho nhiều máychủ/máy tính thời điểm Ví dụ, máy tính làm việc, có nhiều phiên ftp, kết nối web, chương trình chat tất chương trình chạy thời điểm Vậy đển phân biệt dịch vụ này, ta có khái niệm cổng (port), điểm truy cập logic biểu diễn số nguyên 16-bit gắn cho tiến trình mạng Và tiến trình mạng gắn cổng Hình Biểu đồ gói tin gắn cổng định Một socket đầu cuối truyền thông hai chiều, liên kết hai chương trình chạy mạng Một socket gắn với số hiệu cổng (port), tầng giao vận nhận biết ứng dụng mà liệu chuyển đến Socket cho phép thực hoạt động sau: - Kết nối đến máy xa - Gửi liệu - Nhận liệu - Đóng kết nối - Gắn với cổng - Lắng nghe liệu đến - Chấp nhận kết nối từ máy xa cổng gắn Một (chương trình) server chạy máy tính cụ thể có socket gắn cổng cụ thể Chương trình server lắng nghe socket từ client để tạo yêu cầu kết nối Nếu thành công, chương trình server chấp nhận kết nối Sau chấp nhận kết nối, chương trình server có socket gắn cổng khác Nó cần socket để tiếp tục lắng nghe socket ban đầu cho yêu cầu kết nối phục vụ cho việc kết nối với client Hình Thiết lập đường dẫn cho kết nối hai chiều client server 1.2.3 Lập trình TCP Socket Có hai lớp gói java.net sử dụng để tạo chương trình server client: • ServerSocket • Socket Một chương trình server tạo socket cụ thể sử dụng để chờ lắng nghe kết nối từ yêu cầu client (server socket) Trong yêu cầu kết nối, chương trình tạo socket mà thông qua trao đổi liệu với client sử dụng luồng input output Người lập trình phải mở socket, thực hiên việc tạo biểu diễn luồng I/O, sau đóng socket Hình Chương trình client-server có kết nối socket Các bước tạo chương trình server đơn giản: - Mở cổng: ServerSocket server = new ServerSocket(PORT); Chờ kết nối từ Client: Socket client = server.accept(); Tạo luồng I/O cho kết nối với Client DataInputStream dis = new DataInputStream(client.getInputStream()); DataOutputStream dos = new DataOutputStream(client.getOutputStream()); Biểu diễn việc kết nối với Client Nhận từ client: String line = dis.readLine(); Gửi tới client: dos.writeBytes(“Hello\n”); - Đóng socket client.close(); Các bước tạo chương trình client đơn giản: Tạo đối tượng socket Socket client = new Socket(server, port_id); Tạo luồng I/O cho kết nối với server dis = new DataInputStream(client.getInputStream()); dos = new DataOutputStream(client.getOutputStream()); Thực nhận truyền liệu qua luồng I/O Nhận liệu từ server: String line = dis.readLine(); Gửi liệu đến server: dos.writeBytes(“Hello\n”); Đóng socket hoàn thành client.close(); Hình 10 Các bước tạo ứng dựng TCP 1.2.4 Lập trình với chương trình server đa tuyến (ThreadServer) Để cho phép nhiều client kết nối đến server server phải chương trình đa tuyến Mối tuyến (thread) đảm nhận việc liên lạc với client Nghĩa có client kết nối đến, chương trình server sinh tuyến (thread) để điều khiển việc truyền thông với client Các bước tạo chương trình đa server đa tuyến - Tạo lớp extends đến lớp Thread ghi đè lên phương thức run(): class MyThread extends Thread { public void run() { // Nơi thực thi } } - Tạo đối tượng thread: MyThread thr1 = new MyThread(); Bắt đầu thực thi lớp Thread tạo: thr1.start(); - Một chương trình ví dụ minh họa việc tạo gọi đối tượng thread: extending the standard Thread class */ class MyThread extends Thread { public void run() { System.out.println(“ this thread is running ”); } } class ThreadEx1 { public static void main(String [] args ) { MyThread t = new MyThread(); t.start(); } } 1.3 LẬP TRÌNH VỚI PHP Bất thiết kế trang Web nhận thấy hạn chế ngôn ngữ HTML ngôn ngữ lập trình khác CSS Javacript Trong ngôn ngữ trì điểm cốt lõi để phát triển Web theo chức quan trọng xử lí văn giới hạn PHP (Hypertext Preprocessor) ngôn ngữ lập trình kết nối chặt chẽ với máy chủ (Windows Unix) Khi trang Web muốn dựng PHP phải đáp ứng tất trình 1xử lí thông tin trang Web đó, sau đưa kết ngôn ngữ HTML Về trình xữ lí diễn máy chủ nên trang Web viết PHP dễ nhận hệ điều hành Cũng hầu hết ngôn ngữ khác, PHP nối trực tiếp với HTML Khi tài liệu đưa phân tích trình xử lí thực điểm quan trọng sau đưa kết PHP ngôn ngữ lập trình có cấu trúc tính đa dạng Chính với điểm giống khuyến khích nhà thiết kế Web chuyển qua sử dụng PHP Với phiên PHP cung cấp số lượng sở liệu đồ sộ gồm MySQL, mSQL, OPBC Oracle Nó làm việc với hình ảnh file liệu, FTP, XML Host kỹ thuật ứng dụng khác PHP chạy Windows NT/2000/2003 Unix với hỗ trợ IIS Apache, chạy số Flatform khác PHP cung cấp tính mạnh mẽ để thực ứng dụng Web cách nhanh chóng Hơn bạn ngại tới vấn đề quyền bạn sắm máy vi tính cài lên phần mềm Apache, PHP tất đểu miễn phí Chương 2: PHÂN TÍCH THIẾT KẾ CHƯƠNG TRÌNH 2.1 PHÂN TÍCH YÊU CẦU Đề tài xây dựng chương trình “xây dựng chương trình tư vấn tuyển sinh cao đẳng, đại học theo mô hình Client – Server”: 2.1.1 Chương trình Client : - Cho phép server truy cập tới thực hiên chức điều khiển - Nhập tin nhắn từ bàn phím - Gửi tin tới server - Hiển thị tin từ server gửi đến 2.1.2 Chương trình Server: - Lắng nghe chấp nhận kết nối - Truyền nhận liệu với máy client - Cho phép kết nối nhiều Client lúc Server mở cổng kết nối với Client, nhận yêu cầu từ phía Client, thực việc Remote tới Client , lấy thông tin cần thiết gửi trả cho Server 2.2 PHÂN TÍCH CÁC CHỨC NĂNG Chương trình viết theo mô hình Client-Server.Ở Client Server thực chức khác để tạo nên chương trình hoàn chỉnh Client có chức năng: cho phép kết nối tới Server Server có chức năng: - Gởi thông điệp đến client - Truyền nhận liệu với máy client Mô hình tổng quát chương trình mô tả theo sơ đồ sau: Hình 11: Mô hình tổng quát chương trình Mô tả cách thức hoạt động: - Trao đổi liệu client tới server, từ server client gởi liệu xuyên suốt với Chương 3: XÂY DỰNG CHƯƠNG TRÌNH 3.1 XÂY DỰNG CÁC CHỨC NĂNG Mô tả chương trình Client: Client gửi liệu xuyên suốt cho Server Mô tả chương trình Server: 1: Tạo Thread cho Client kết nối 2: Thread kết nối để lấy liệu theo yêu cầu Client 3: ThreadClient nhận liệu từ ThreadServer 4: Gửi trả cho Client 5: Tiếp nhận liệu từ Client 3.2 KẾT QUẢ CHẠY CHƯƠNG TRÌNH Trang chủ: Trang đăng ký User để chat với nhân viên Giao diện admin chat: Giao diện khách hàng chat P hần KẾT LUẬN NHỮNG VẤN ĐỀ ĐẠT ĐƯỢC Trong khuôn khổ đề tài, chúng em làm rõ số vấn đề liên quan đến môn học Lập Trình Mạng, xây dựng thành công chương trình demo nhằm làm rõ vấn đề lí thuyết Đề tài đạt kết : Tìm hiểu cách xây dựng chương trình với lập trình Socket theo mô hình client – server, xây dựng chương trình tư vấn tuyển sinh cao đẳng, đại học NHỮNG VẤN ĐỀ CÒN HẠN CHẾ Chương trình chưa thực hoàn thiện để trở thành sản phẩm thương mại Bên cạnh việc quản lí nhóm, quản lí mã nguồn diễn thủ công chưa thực áp dụng quy trình công nghệ phần mềm Tuy chúng em xin kết thúc đề tài lập trình mạng với đề tài “Tìm hiểu sử dụng kỹ thuật lập trình Socket xây dựng chương trình tư vấn tuyển sinh cao đẳng, đại học theo mô hình Client – Server” Chúng em xin cảm ơn hướng dẫn giúp đỡ tận tình thầy “Nguyễn Văn Khương” suốt trình thực đề tài TÀI LIỆU THAM KHẢO [1] ThS Nguyễn Văn Khương, “Bài giảng Lập trình mạng”, năm 2015 [2] Tham khảo từ trang https://www.google.com MỤC LỤC (Tạo mục lục tự động) NHẬN XÉT CỦA GIẢNG VIÊN ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… [...]... P hần 3 KẾT LUẬN 1 NHỮNG VẤN ĐỀ ĐẠT ĐƯỢC Trong khuôn khổ đề tài, chúng em đã cơ bản làm rõ một số vấn đề liên quan đến môn học Lập Trình Mạng, và đã xây dựng thành công một chương trình demo nhằm làm rõ các vấn đề lí thuyết Đề tài đã đạt được kết quả là : Tìm hiểu được cách xây dựng một chương trình với lập trình Socket theo mô hình client – server, xây dựng chương trình tư vấn và tuyển sinh cao đẳng,... 2 NHỮNG VẤN ĐỀ CÒN HẠN CHẾ Chương trình vẫn chưa thực sự hoàn thiện để có thể trở thành sản phẩm thương mại Bên cạnh đó việc quản lí nhóm, quản lí mã nguồn vẫn còn diễn ra rất thủ công chưa thực sự áp dụng đúng quy trình của công nghệ phần mềm Tuy vậy chúng em xin kết thúc đề tài lập trình mạng với đề tài “Tìm hiểu và sử dụng kỹ thuật lập trình Socket xây dựng chương trình tư vấn và tuyển sinh cao... để thực hiện ứng dụng Web một cách nhanh chóng Hơn nữa bạn không phải ngại tới vấn đề bản quyền khi bạn sắm một máy vi tính và cài lên thì những phần mềm Apache, PHP tất cả đểu miễn phí Chương 2: PHÂN TÍCH THIẾT KẾ CHƯƠNG TRÌNH 2.1 PHÂN TÍCH YÊU CẦU Đề tài xây dựng chương trình xây dựng chương trình tư vấn và tuyển sinh cao đẳng, đại học theo mô hình Client – Server”: 2.1.1 Chương trình Client : -... suốt với nhau Chương 3: XÂY DỰNG CHƯƠNG TRÌNH 3.1 XÂY DỰNG CÁC CHỨC NĂNG Mô tả chương trình Client: Client gửi dữ liệu xuyên suốt cho Server Mô tả chương trình Server: 1: Tạo Thread cho mỗi Client kết nối 2: Thread kết nối để lấy dữ liệu theo yêu cầu Client 3: ThreadClient nhận dữ liệu từ ThreadServer 4: Gửi trả về cho Client 5: Tiếp nhận dữ liệu từ Client 3.2 KẾT QUẢ CHẠY CHƯƠNG TRÌNH Trang chủ: Trang... một chương trình hoàn chỉnh Client có chức năng: cho phép kết nối tới Server Server có chức năng: - Gởi thông điệp đến mấy client - Truyền và nhận dữ liệu với máy client Mô hình tổng quát của chương trình được mô tả theo sơ đồ sau: Hình 11: Mô hình tổng quát chương trình Mô tả cách thức hoạt động: - Trao đổi dữ liệu giữa client tới server, từ đây server và client gởi dữ liệu xuyên suốt với nhau Chương. .. MyThread(); t.start(); } } 1.3 LẬP TRÌNH VỚI PHP Bất cứ ai khi thiết kế những trang Web đều nhận thấy rằng những hạn chế của ngôn ngữ HTML và ngôn ngữ lập trình khác như CSS và Javacript Trong khi các ngôn ngữ này vẫn duy trì những điểm cốt lõi để phát triển Web theo chức năng quan trọng là xử lí văn bản cũng được giới hạn PHP (Hypertext Preprocessor) là ngôn ngữ lập trình được kết nối chặt chẽ với... đưa ra kết quả PHP là một ngôn ngữ lập trình có cấu trúc và tính năng đa dạng Chính với những điểm giống nhau này đã khuyến khích những nhà thiết kế Web chuyển qua sử dụng PHP Với phiên bản này PHP cung cấp một số lượng cơ sở dữ liệu khá đồ sộ gồm cả MySQL, mSQL, OPBC và Oracle Nó có thể làm việc với các hình ảnh các file dữ liệu, FTP, XML và Host của các kỹ thuật ứng dụng khác PHP có thể chạy trên Windows... Unix) Khi một trang Web muốn dựng PHP thì phải đáp ứng được tất cả các quá trình 1xử lí thông tin trong trang Web đó, sau đó đưa ra kết quả như ngôn ngữ HTML Về quá trình xữ lí này diễn ra trên máy chủ nên trang Web được viết bằng PHP sẽ dễ nhận hơn bất cứ hệ điều hành nào Cũng như hầu hết các ngôn ngữ khác, PHP có thể nối trực tiếp với HTML Khi một tài liệu đưa ra phân tích quá trình xử lí cũng được thực... Hiển thị tin từ server gửi đến 2.1.2 Chương trình Server: - Lắng nghe và chấp nhận kết nối - Truyền và nhận dữ liệu với máy client - Cho phép kết nối nhiều Client trong cùng một lúc Server mở cổng kết nối với các Client, nhận yêu cầu từ phía Client, thực hiện việc Remote tới Client , lấy thông tin cần thiết và gửi trả cho Server 2.2 PHÂN TÍCH CÁC CHỨC NĂNG Chương trình được viết theo mô hình Client-Server.Ở...} } - Tạo một đối tư ng thread: MyThread thr1 = new MyThread(); Bắt đầu thực thi lớp Thread đã được tạo: thr1.start(); - Một chương trình ví dụ minh họa việc tạo và gọi một đối tư ng thread: extending the standard Thread class */ class MyThread extends Thread { public void run() { System.out.println(“