MỤC LỤC MỞ ĐẦU 2 CHƯƠNG I: TỔNG QUAN VỀ HỆ PHÂN TÁN VÀ LẬP TRÌNH MẠNG PHÂN TÁN 3 1. Hệ phân tán (Distributed Systems) 3 a. Hệ tin học phân tán là gì? 3 b. Mục tiêu của hệ phân tán 4 2. Lập trình phân tán 4 CHƯƠNG II: LÝ THUYẾT 5 1. Thuật toán đảm bảo gắn bó yếu nhờ bộ tuần tự tuần hoàn 5 2. Thuật toán đảm bảo gắn bó mạnh 5 CHƯƠNG III. GIỚI THIỆU BÀI TOÁN 7 1. Phát biểu bài toán: 7 2. Lý thuyết để giải bài toán 7 a. Mô hình tính toán ClientServer 7 b. Mô hình cầu nối JDBC ODBC 9 c. Quá trình kiểm soát lỗi và phòng tránh bế tắc: 11 CHƯƠNG IV. LẬP TRÌNH JAVA GIẢI QUYẾT BÀI TOÁN 12 1. Thiết kế cấu trúc dữ liệu Quản lý hệ thống 12 a. Phân tích hệ thống 12 b. Giải thuật giải quyết bài toán 12 2. Kết quả chương trình 13 KẾT LUẬN 15 TÀI LIỆU THAM KHẢO 16 MỞ ĐẦU Hệ tin học phân tán là hệ thống tin học hiện đại, đa dạng, phức tạp và đang trên đà phát triển, được nhiều trường đại học, nhiều viện nghiên cứu, nhiều chuyên gia công nghệ thông tin, quan tâm nghiên cứu với nhiều công trình khoa học có giá trị về mặt nguyên lý, phương pháp cũng như ứng dụng trong thực tế. Hiện nay, việc nghiên cứu phát triển các giải pháp kỹ thuật cơ sở cho các ứng dụng phân tán đã đạt được những thành công nhất định và thể hiện trong các công bố mới nhất. Tuy nhiên, để có được một giải pháp hữu hiệu đáp ứng các yêu cầu đặt ra của việc gắn bó dữ liệu trong môi trường phân tán dựa vào mạng truyền thông như InternetIntranet, thì đòi hỏi phải tiếp tục nghiên cứu hoàn thiện các giải pháp hiện hành, việc lập trình giải quyết một bài toán hay giải quyết một yêu cầu xử lý phân tán các đối tượng vẫn còn là một vấn đề rất mới và không đơn giản. Được sự đồng ý và hướng dẫn của PGS TS. Lê Văn Sơn, tôi tiếp tục tìm hiểu vấn đề lập trình phân tán giải quyết một bài toán cụ thể, đó là Bài toán ”Lập trình Cập nhật danh bạ điện thoại”. Bài toán mô hình Cập nhật danh bạ điện thoại là bài toán là phải đảm bảo gắn bó dữ liệu. Trong tiểu luận này, tôi cố gắng tìm hiểu vận dụng JAVA để lập trình giải quyết bài, theo hai cách là sử dụng đa tuyến và giả lập ba server. Trong đó giả lập server theo hướng một server cho một địa phương. Xin trân trọng cám ơn PGS TS. Lê Văn Sơn đã cung cấp kiến thức, tài liệu để tôi hoàn thành tiểu luận này. Xin cảm ơn các bạn bè đồng nghiệp đã giúp đỡ, động viên và chia sẻ kinh nghiệm học tập nghiên cứu.
Tiểu luận Lập trình mạng Trang 1 BỘ GIÁO DỤC & ĐÀO TẠO ĐẠI HỌC ĐÀ NẴNG TIỂU LUẬN MÔN HỌC LẬP TRÌNH MẠNG Đề tài: LẬP TRÌNH CẬP NHẬT DANH BẠ ĐIỆN THOẠI PHÂN TÁN TRONG ĐIỀU KIỆN PHẢI ĐẢM BẢO GẮN BÓ THÔNG TIN Giáo viên hướng dẫn : PGS.TS. Lê Văn Sơn Học viên thực hiện : Phan Quang Tùng Trần Văn Khánh Lớp Cao Học Khoa học Máy tính Khóa 11 Phan Quang Tùng - Trần Văn Khánh - Lớp Cao học ngành Khoa học máy tính khóa 11. Tiểu luận Lập trình mạng Trang 2 MỤC LỤC TIỂU LUẬN MÔN HỌC 1 LẬP TRÌNH MẠNG 1 MỞ ĐẦU 3 CHƯƠNG i: TỔNG QUAN VỀ HỆ PHÂN TÁN và LẬP TRÌNH MẠNG PHÂN TÁN 4 1. Hệ phân tán (Distributed Systems) 4 a. Hệ tin học phân tán là gì? 4 b. Mục tiêu của hệ phân tán 5 2. Lập trình phân tán 5 chương iI: lý thuyẾT 6 1. Thuật toán đảm bảo gắn bó yếu nhờ bộ tuần tự tuần hoàn 6 2. Thuật toán đảm bảo gắn bó mạnh 6 CHƯƠNG III. GIỚI THIỆU BÀI TOÁN 8 1. Phát biểu bài toán: 8 2. Lý thuyết để giải bài toán 8 a. Mô hình tính toán Client/Server 8 b. Mô hình cầu nối JDBC- ODBC 10 c. Quá trình kiểm soát lỗi và phòng tránh bế tắc: 12 CHƯƠNG IV. LẬP TRÌNH JAVA GIẢI QUYẾT BÀI TOÁN 13 1.Thiết kế cấu trúc dữ liệu Quản lý hệ thống 13 a. Phân tích hệ thống 13 b. Giải thuật giải quyết bài toán 13 2.Kết quả chương trình 14 KẾT LUẬN 16 TÀI LIỆU THAM KHẢO 17 Phan Quang Tùng - Trần Văn Khánh - Lớp Cao học ngành Khoa học máy tính khóa 11. ĐÀ NẴNG 3/2010 Tiểu luận Lập trình mạng Trang 3 MỞ ĐẦU Hệ tin học phân tán là hệ thống tin học hiện đại, đa dạng, phức tạp và đang trên đà phát triển, được nhiều trường đại học, nhiều viện nghiên cứu, nhiều chuyên gia công nghệ thông tin, quan tâm nghiên cứu với nhiều công trình khoa học có giá trị về mặt nguyên lý, phương pháp cũng như ứng dụng trong thực tế. Hiện nay, việc nghiên cứu phát triển các giải pháp kỹ thuật cơ sở cho các ứng dụng phân tán đã đạt được những thành công nhất định và thể hiện trong các công bố mới nhất. Tuy nhiên, để có được một giải pháp hữu hiệu đáp ứng các yêu cầu đặt ra của việc gắn bó dữ liệu trong môi trường phân tán dựa vào mạng truyền thông như Internet/Intranet, thì đòi hỏi phải tiếp tục nghiên cứu hoàn thiện các giải pháp hiện hành, việc lập trình giải quyết một bài toán hay giải quyết một yêu cầu xử lý phân tán các đối tượng vẫn còn là một vấn đề rất mới và không đơn giản. Được sự đồng ý và hướng dẫn của PGS TS. Lê Văn Sơn, tôi tiếp tục tìm hiểu vấn đề lập trình phân tán giải quyết một bài toán cụ thể, đó là Bài toán ”Lập trình Cập nhật danh bạ điện thoại”. Bài toán mô hình Cập nhật danh bạ điện thoại là bài toán là phải đảm bảo gắn bó dữ liệu. Trong tiểu luận này, tôi cố gắng tìm hiểu vận dụng JAVA để lập trình giải quyết bài, theo hai cách là sử dụng đa tuyến và giả lập ba server. Trong đó giả lập server theo hướng một server cho một địa phương. Xin trân trọng cám ơn PGS TS. Lê Văn Sơn đã cung cấp kiến thức, tài liệu để tôi hoàn thành tiểu luận này. Xin cảm ơn các bạn bè đồng nghiệp đã giúp đỡ, động viên và chia sẻ kinh nghiệm học tập nghiên cứu. Phan Quang Tùng - Trần Văn Khánh - Lớp Cao học ngành Khoa học máy tính khóa 11. Tiểu luận Lập trình mạng Trang 4 CHƯƠNG I: TỔNG QUAN VỀ HỆ PHÂN TÁN VÀ LẬP TRÌNH MẠNG PHÂN TÁN 1. Hệ phân tán (Distributed Systems) a. Hệ tin học phân tán là gì? Hệ tin học phân tán hay nói ngắn gọn là hệ phân tán (Distributed System) là hệ thống xử lý thông tin bao gồm nhiều bộ xử lý hoặc bộ vi xử lý nằm tại các vị trí khác nhau và được liên kết với nhau thông qua phương tiện viễn thông dưới sự điều khiển thống nhất của một hệ điều hành. Từ định nghĩa này, người ta có thể xem hệ phân tán như là một tập hợp bao gồm các bộ xử lý hoặc bộ vi xử lý với bộ nhớ và đồng hồ nhịp độc lập. Điều này đồng nghĩa với việc các bộ xử lý không sử dụng chung bộ nhớ và đồng hồ. Như vậy, mỗi một hệ xử lý thông tin thành phần của hệ phân tán bao gồm một hay nhiều bộ xử lý và bộ nhớ cục bộ. Trong hệ phân tán, hệ xử lý thông tin thành phần phải được thiết kế sao cho về cấu trúc, số lượng và dung lượng có thể cho phép thực hiện một cách trọn vẹn các chức năng mà nó phải đảm nhận. Phan Quang Tùng - Trần Văn Khánh - Lớp Cao học ngành Khoa học máy tính khóa 11. Tiểu luận Lập trình mạng Trang 5 b. Mục tiêu của hệ phân tán - Tăng tốc độ bình quân trong tính toán, xử lý. - Cải thiện tình trạng luôn luôn sẵn sàng của các loại tài nguyên. - Tăng độ an toàn cho dữ liệu. - Đa dạng hóa các loại hình dịch vụ tin học - Đảm bảo tính toàn vẹn của thông tin. 2. Lập trình phân tán Công cụ chính yếu để giải quyết vấn đề nêu trên là các ngôn ngữ lập chương trình được bổ sung thêm một số lệnh, hàm hay thủ tục chuẩn cho phép người lập trình biên soạn và thực hiện trong môi trường phân tán. Các ngôn ngữ thuật toán mà ta thường sử dụng để lập chương trình cho các hệ tập trung không có được khả năng đặc biệt này. Các khái niệm mới như vấn đề trỏ đến các đối tượng xử lý trong các ứng dụng và các biểu thức điều khiển xác định dãy tạm thời các thao tác sơ đẳng khác nhau cũng sẽ được nghiên cứu.[1] Đương nhiên, các vấn đề về trỏ đối tượng và điều khiển đã được đặt ra trong ngữ cảnh của các ứng dụng tập trung. Để trỏ đến đối tượng một cách chính xác trong các hệ tập trung, người ta đã sử dụng thành công hàng loạt các biện pháp. Một mặt, người ta có các biện pháp kỹ thuật liên hệ giữa các biến. Biến là dãy các ký tự biểu diễn đối tượng cần truy cập; biến được định nghĩa trong các ngôn ngữ và dành cho người lập trình. Mối liên hệ giữa biến và các ô nhớ chứa giá trị cần thiết cũng được định nghĩa chặt chẽ. Mặt khác, người ta có các phương pháp cho phép xác định tập hợp các biến (cấu trúc khối, danh mục phân cấp, ). Cấu trúc điều khiển tuần tự (điều kiện, lặp, thủ tục) cho phép thực hiện tốt công việc, nhưng không phải lúc nào cũng thoả mãn các yêu cầu của việc thực hiện song song. Hình thức khác nhau của chúng rất phong phú như cùng mặc định, cùng bên, tiến trình, gặp gỡ, kịch bản, có thể nói ngắn gọn trong một thuật ngữ là hàm nguyên thuỷ. Sự phát triển nhanh chóng các cấu trúc được giải thích bằng thực tế là phần lớn chỉ đáp ứng cho các tình huống cụ thể trên các hệ thống đơn xử lý. Đối với các hệ đa xử lý các vấn đề đặt ra mà câu trả lời đang còn ở phía trước và cần phải có nhiều các công trình nghiên cứu thì mới có thể đáp ứng được. Khi lập chương trình phân tán đòi hỏi sự thay đổi nhiều về lượng hơn là chất, cho nên ta cần phải tiếp tục nghiên cứu các khái niệm mới liên quan đến vấn đề trỏ dữ liệu và vấn đề cấu trúc điều khiển. Phan Quang Tùng - Trần Văn Khánh - Lớp Cao học ngành Khoa học máy tính khóa 11. Tiểu luận Lập trình mạng Trang 6 CHƯƠNG II: LÝ THUYẾT 1. Thuật toán đảm bảo gắn bó yếu nhờ bộ tuần tự tuần hoàn a. Nguyên lý: Trước khi phát một yêu cầu, một trạm nào đó cần phải kết hợp với nó một số thứ tự được cấp từ bộ tuần tự tuần hoàn. Các yêu cầu được tiếp nhận tại mỗi trạm theo cùng một trật tự thống nhất. Điều đó giúp ta có được một sự gắn bó yếu. Cần quan tâm rằng cơ chế phân phối các số dựa trên nền tảng tổ chức các trạm theo kiểu vòng tròn ảo. b. Triển khai hệ ổn định: Bộ tuần tự cung cấp cho mỗi một yêu cầu số sắp tới còn chưa dùng, giả sử đó là T. Khi đến phiên của trạm nhận bộ phận tuần tự, nó yêu cầu một số lượng n số đúng bằng số lượng các yêu cầu cập nhật đang chờ trên trạm này. Các số này là: T, T+1, T+2, T+n-1 Nó tiếp tục chuyển bộ tuần tự cho trạm kề liền sau nó và số sắp tới chưa dùng đến là T+n. Khi một trạm đã có số, nó phát yêu cầu cập nhật cùng với số này. Trên mỗi trạm, các cập nhật được thực hiện bằng cách tiếp nhận các yêu cầu cùng các số liên tiếp nhau (theo một trật tự). Để xác định yêu cầu sắp đến cần xử lý, mỗi một trạm duy trì một biến chứa số V được phối hợp với yêu cầu xử lý cuối cùng. Các yêu cầu mang các số lớn hơn V + 1 được lưu trữ trong khi chờ xử lý yêu cầu V + 1. Việc phát đi các yêu cầu có thể sử dụng vòng tròn, nhưng điều đó không phải là bắt buộc. Một trạm khi đã rút một lượng số cần phải được sử dụng hết khi nó đến lượt tiếp theo tiếp nhận bộ tuần tự, nếu không các trạm khác sẽ phải chờ. 2. Thuật toán đảm bảo gắn bó mạnh a. Nguyên lý: Tập hợp bao gồm các trạm được tổ chức theo kiểu vòng tròn ảo. Các cập nhật được thực hiện theo hai thì: - Thống nhất giữa hai trạm - Thực hiện cập nhật Phan Quang Tùng - Trần Văn Khánh - Lớp Cao học ngành Khoa học máy tính khóa 11. Tiểu luận Lập trình mạng Trang 7 Do vậy, thuật toán này đảm bảo một sự gắn bó mạnh. Nếu có nhiều yêu cầu cập nhật diễn ra đồng thời thì ta phải có quy tắc để có thể quyết định yêu cầu nào được tiếp nhận và thoả mãn. Nhằm phục vụ cho ý tưởng đó, ta thường hay sử dụng dấu phối hợp cho mỗi cập nhật và ta xử lý yêu cầu có Thời gian dấu lâu nhất. b. Triển khai hệ ổn định: Mỗi trạm có thể có các trạng thái sau: - Nghỉ ngơi: Trạm không thực hiện cập nhật nào cả. - Hoạt động: Trạm đã nhận một yêu cầu cập nhật cục bộ mà yêu cầu này đã được truyền cho các trạm khác để kiểm tra. - Thụ động: Trạm đã đồng ý cho một cập nhật và chờ trật tự tương ứng. - Cập nhật: Trạm đang trong tình trạng chuyển của cập nhật, trong khi đó tất cả các yêu cầu khác truyền đến đều được lưu trữ. Chũng sẽ được xử lý khi quay về một trong các trạng thái khác. Lúc khởi sự, tất cả các trạm đều trong trạng thái nghỉ ngơi. Trạm khởi sự việc cập nhật, đầu tiên cần phải gửi một yêu cầu cho phép cập nhật, nó chỉ làm được công việc đó trong trạng thái nghỉ ngơi. Lúc này nó được nhận dấu và được gửi vào vòng tròn, trạm khởi sự chuyển trạng thái từ nghỉ ngơi sang hoạt động Nếu chỉ có một yêu cầu duy nhất được đưa vào vòng tròn, nó đi qua tất cả các trạm để chuyển các trạm này từ nghỉ ngơi sang thụ động. Khi nó đã trở về nơi khởi sự thì việc thống nhất coi như hoàn tất. Việc cập nhật nói riêng lúc này được gửi đi và mỗi trạm sau khi thực hiện lại trở về trạng thái nghỉ ngơi. Nếu có nhiều yêu cầu được đưa ra đồng thời trong vòng tròn, thì tình hình đó dễ dàng diễn ra xung đột. Lúc này, ta phải chọn một yêu cầu có Thời gian dấu lâu nhất. Để tiến hành công việc đó, ta nêu bật vai trò của “bộ chắn đường” (barrage) cho các trạm khởi sự. Một trạm nào đó trong trạng thái nghỉ ngơi hay thụ động phải chuyển toàn bộ yêu cầu đã đến với nó; một trạm trong trạng thái hoạt động chỉ phải chuyển các yêu cầu có Thời gian lâu hơn các yêu cầu mà chính nó đã phát đi; các yêu cầu khác đều bị dừng lại và được lưu giữ. Các yêu cầu bị lưu lại sẽ được gửi tiếp vào vòng tròn, khi trạm lưu trữ chúng hoàn thành việc cập nhật riêng của mình. Phan Quang Tùng - Trần Văn Khánh - Lớp Cao học ngành Khoa học máy tính khóa 11. Tiểu luận Lập trình mạng Trang 8 CHƯƠNG III. GIỚI THIỆU BÀI TOÁN 1. Phát biểu bài toán: Đề bài: Lập trình cập nhật danh bạ điện thoại phân tán trong điều kiện gắn bó thông tin - Mỗi địa phương có một danh bạ điện thoại trên Server thuộc hệ thống cục bộ của mình - Quyền truy cập để tra cứu được xác định như nhau đối với tất cả các client - Quyền truy cập để cập nhật được cấp cho mỗi hệ thống cục bộ là một client đặc biệt. - Viết chương trình quan sát danh bạ điện thoại tại các Server. 2. Lý thuyết để giải bài toán a. Mô hình tính toán Client/Server Khi nói tới lập trình mạng ta thường nghĩ đến cách trao đổi giữa một chương trình phục vụ (Server) với một hay nhiều chương trình khách (Client). Chương trình khách gửi một yêu cầu tới cho chương trình phục vụ, và chương trình này xử lý dữ liệu để trả lời cho chương trình khách. Như vậy, chương trình khách muốn gửi được yêu cầu thì trước hết phải tìm cách kết nối với Server. Server có thể chấp nhận hay từ chối sự kết nối này. Một khi sự kết nối đã được thiết lập thì Client và Server trao đổi với nhau thông qua các lớp cho phép kết nối. Các lớp trong gói java.net cung cấp các phương thức để kết nối mạng và trao đổi tin giữa các máy với nhau theo mô hình Client/Server. Mặt khác, trên Internet nhiều máy tính sử dụng các giao thức để trao đổi với nhau. Socket chính là lớp (trừu tượng) thực hiện sự trao đổi giữa Server và Client. Java xem sự trao đổi giữa Server và Client dựa trên Socket gần giống như các thao tác vào/ra (I/O), nghĩa là các chương trình có thể đọc, ghi qua Socket dễ dàng như chúng đọc, ghi lên tệp dữ liệu. Lớp Server tạo ra sự kết nối từ máy Client tới Server thông qua các phương thức tạo lập đối tượng. Phan Quang Tùng - Trần Văn Khánh - Lớp Cao học ngành Khoa học máy tính khóa 11. Tiểu luận Lập trình mạng Trang 9 Lớp ServerSocket dùng để tạo kết nối từ Server tới các Client. Đối tượng của lớp này được tạo ra trên Server và lắng nghe những kết nối từ Client theo cổng xác định. Server phải chạy thường trực trước khi Client bắt đầu thực hiện. Server chờ sự yêu cầu kết nối của Client. Để thiết lập được một Server, ta phải tạo ra một đối tượng, ví dụ server của lớp ServerSocket, gắn nó với một cổng nào đó và lắng nghe xem có Client nào cần kết nối hay không. Các Socket được xác định tương ứng với địa chỉ của máy và cổng. ServerSocket server =new ServerSocket(port); Trong đó port là số hiệu của cổng nằm giữa 0 và 16383. Cổng cho phép trao đổi tin giữa hai chương trình. Địa chỉ của cổng là số có độ dài 16 bit và thường phụ thuộc vào các giao thức ứng dụng. Thông thường các dịch vụ nổi tiếng hiện nay đều có qui định chuẩn cổng dành riêng cho mình như: Dịch vụ Cổng FPT 21 HTTP 80 Telnet 23 Finger 79 SMTP 25 Sau khi đối tượng server được tạo ra, Server có thể sử dụng câu lệnh sau để lắng nghe yêu cầu kết nối của Client. Socket connect=new Socket(ServerName, port); ServerName là tên của máy chủ trên Interrnet hoặc địa chỉ IP, xác định duy nhất một máy tính trên toàn mạng Internet. IP là giao thức được sử dụng để gửi tin từ một máy tới máy khác trên mạng Internet. IP phải xác định được máy gửi và máy nhận thông qua địa chỉ IP. Một địa chỉ IP gồm bốn số nguyên nằm giữa 0 và 255, phân cách với nhau bằng dấu ‘.’. Ví dụ Socket connect=new Socket(“10.0.0.138”, 8000); Phan Quang Tùng - Trần Văn Khánh - Lớp Cao học ngành Khoa học máy tính khóa 11. Tiểu luận Lập trình mạng Trang 10 Vì địa chỉ IP thường rất khó nhớ nên thay vì địa chỉ IP người ta thường sử dụng tên miền dịch vụ, ví dụ www.phutho.gov.vn. tương ứng với địa chỉ IP nêu trên. Ngày nay, trên Internet hai máy có thể trao đổi với nhau phần lớn đều dựa trên qui ước hay giao thức chuẩn TCP/IP. Sau khi sự kết nối đã được Server chấp nhận, việc trao đổi giữa Client và Server giống như trên các luồng I/O. Ví dụ InputStream isFromServer = connectToServer. getInputStream(); OutputStream osToServer = connectToServer. getOutputStream(); Tạo ra luồng vào/ra: isFromServer để đọc từ Server và osToServer để ghi vào (gửi cho) Server. Hai lớp InputStream, OutputStream được sử dụng để đọc và ghi từng byte. Ta cũng có thể sử dụng DataOutputStream, DataInputputStream, BufferedReader, PrintWriter để đọc, ghi dữ liệu kiểu int, double, String, v.v. Ví dụ, đoạn chương trình sau tạo ra isFromClient, osToClient để đọc, ghi các dữ liệu kiểu nguyên thủy ở Client. DataInputStream isFromClient = new DataInputStream (connectToClient.getInputStream()); DataOutputStream osFromClient = new DataOutputStream (connectToClient.getOutputStream()); Server có thể sử dụng isFromClient.read() để nhận dữ liệu từ Client và isFromClient.write() để gửi dữ liệu cho Client. b. Mô hình cầu nối JDBC- ODBC ODBC, giao diệ chung của Microsoft để truy cập các CSDL SQL được quản lý trên một hệ thống Windows bằng cách sử dụng ODBC Data Source Administrator Ở đây ta tạo đối tượng cầu nối (Connection) đến database cần truy xuất, tạo 1 đối tượng “Statement” kết hợp với cầu nối để nhờ nó thực hiện câu truy vấn SQL Phan Quang Tùng - Trần Văn Khánh - Lớp Cao học ngành Khoa học máy tính khóa 11. [...]... Áp dụng vào bài toán cụ thể ở tiểu luận là việc cập nhật danh bạ điện thoại phân tán Khi đó, chương trình phải đảm bảo, ở mọi nơi, mọi server khi khách hàng truy cập vào để tra cứu thông tin thì hệ thống phải trả lại kết quả giống nhau Như vậy quá trình cập nhật dữ liệu sẽ gặp những vấn đề sau: Khi 1 client đặc biệt vào Update một trường dữ liệu nào đó, trong khi đó 1 client đặc biệt khác muốn xác nhận... 11 xuất Tiểu luận Lập trình mạng Trang 12 System.out.println(“Error : “+e); } c Quá trình kiểm soát lỗi và phòng tránh bế tắc: Việc lập trình xử lý phân tán không hề giống với phương thức lập trình truyền thống Ví dụ ở lập trình truyền thống (lập trình tập trung) việc cấp phát con trỏ và sử dụng con trỏ trở nên rất linh hoạt và tiện lợi Tuy nhiên đối với việc lập trình xử lý phân tán việc cấp phát... dụng vòng tròn ảo để cập nhật dữ liệu tại các server • Sử dụng thư viện SOCKET trong Java để giả lập ba server giải quyết bài toán Cập nhật danh bạ điện thoại Đối với bản thân, dù đã nhiều năm học tập và công tác có liên quan đến chuyên môn tin học, nhưng hệ tin học phân tán cùng với việc lập trình phân tán thật sự là vấn đề còn rất mới Từ những bài giảng, sách giáo khoa và những hướng dẫn của PGSTS... luận Lập trình mạng KẾT LUẬN Tiểu luận đã trình bày tóm tắc các vấn đề lý thuyết cơ bản cần thiết để vận dụng để giải quyết bài toán mô hình Cập nhật danh bạ điện thoại bằng hai công cụ trong Java: • Thực hiện đa tuyến trong Java (multithreading) hay còn gọi là thực hiện đồng thời (concurrency) để giải bài toán • Sử dụng vòng tròn ảo để cập nhật dữ liệu tại các server • Sử dụng thư viện SOCKET trong. .. chương trình Để xây dựng hệ thống cập nhật danh bạ điện thoại, chúng ta cần xây dựng hệ thống đa server và một monitor giám sát quá trình cập nhật dữ liệu tại các server Và 1 client sẽ làm nhiệm vụ cập nhật dữ liệu lên server Hệ thống sử dụng Netbeans 6.5 để design chương trình Phan Quang Tùng - Trần Văn Khánh - Lớp Cao học ngành Khoa học máy tính khóa 11 Tiểu luận Lập trình mạng Trang 15 Giao diện lớp... phải được quản lý Như vậy thông tin được quản lý cho người cập nhật chương trình là: - Mã người sử dụng - Tên Người sử dụng - Mật mã Tuy nhiên với giới hạn của tiểu luận, ta coi như những việc đăng nhập cho người cập nhật hệ thống tại mỗi client đặc biệt sẽ được bỏ qua, chức năng này sẽ được áp dụng khi hệ thống được triển khai thực tế Do vậy ta chỉ quan tâm đến vấn đề chính là việc cập nhật danh bạ. .. khăn, bởi nếu như ở lập trình xử lý tập trung việc cấp phát con trở sẽ do hệ điều hành đưa ngay vào ngăn xếp và hàng đợi và cấp phát địa chỉ bộ nhớ cho nó Nhưng lập trình phân tán sẽ phải truyền các biến, các địa chỉ con trỏ qua hệ thống mạng Do vậy cách thức lập trình sẽ hoàn toàn khác bởi khi đó phải sử dụng đối tượng triệu gọi từ xa hay một luồng xuất nhập để nhận và phát những thông điệp nhằm sử... nhiều ý nghĩa đối với công tác học tập, tìm hiểu và nghiên cứu môn học Lập trình Mạng, hệ phân tán của bản thân Tiểu luận cũng mở ra nhiều hướng nghiên cứu, tìm hiểu về lập trình mạng, lập trình phân tán, đặc biệt là sử dụng Java SOCKET, sử dụng đa tuyến để giải quyết một lớp các bài toán có yêu cầu đồng bộ hoá các tiến trình, trao đổi thông điệp Một lần nữa, tôi xin trân trọng cám ơn GSTS Lê Văn Sơn... CSDL và cập nhật vào bảng tạm, gửi thông điệp tạo bảng tạm cho các Server khác B6.5 Nếu có tranh chấp xảy ra, sẽ phản hồi lại cho client giao dịch không thành công B6.6 Ngược lại server thực hiện chuyển thông điệp cập nhật bảng chính Và lắng nghe B6.7 Nếu nhận được thông điệp đồng bộ hóa thì Server sẽ thực hiện cập nhật bảng chính và kết thúc giao dịch-> giao dịch thành công 2 Kết quả chương trình Để... Tiểu luận Lập trình mạng CHƯƠNG IV LẬP TRÌNH JAVA GIẢI QUYẾT BÀI TOÁN 1 Thiết kế cấu trúc dữ liệu Quản lý hệ thống a Phân tích hệ thống Người sử dụng hệ thống phải được đăng ký để xác định quyền truy nhập hệ thống, tức các chức năng mà hệ thống cung cấp cho người sử dụng cũng như phạm vi thông tin mà người sử dụng được khai thác Mỗi người sử dụng được cấp một mã số, cùng với mã số các thông tin cơ bản