Khóa luận Phát triển ứng dụng chia sẻ file ngang hàng

Các hệ thống chia sẻ file ngang hàng đang có những bước phát triển mạnh mẽ trong những năm gần đây. Trong kiến trúc client/server, tất cả các tài nguyên đều tập trung vào một chỗ, các điểm nút chỉ truy nhập vào đó chứ hầu như không bao giờ giao tiếp với nhau. Ngược lại, các điểm nút tham gia vào mạng ngang hàng đều có thể chứa tài nguyên và khi phát hiện ra nhau là trao đổi trực tiếp với nhau không thông qua server. Các hệ thống ngang hàng hiện nay được tổ chức theo một trong hai mô hình : thuần túy hoặc lai ghép. Mô hình ngang hàng thuần túy giải quyết vấn đề tìm kiếm tài nguyên dựa vào một mạng lưới các điểm nút đầu mối. Trong khi đó, mô hình ngang hàng lai ghép lưu địa chỉ nguồn cung cấp tài nguyên trên các server chỉ mục. Nội dung khóa luận phát triển, xây dựng thử nghiệm một số hệ thống chia sẻ file ngang hàng theo phương thức sử dụng nhiều server chỉ mục. Các server được tổ chức liên kết với nhau theo chuỗi hay bằng cách sao lặp toàn bộ. Trong hệ thống liên kết chuỗi, mỗi server chỉ lưu lại chỉ mục của các điểm nút do nó quản lý. Trong hệ thống sao lặp toàn bộ, các server lưu lại chỉ mục của tất cả các điểm nút, bất kể điểm nút đó thuộc chức năng quản lý của server nào. Ứng dụng được phát triển bằng công nghệ .NET. Hiệu năng của hai mô hình sẽ được so sánh đánh giá thông qua lý thuyết và thực nghiệm.

doc40 trang | Chia sẻ: tuandn | Ngày: 20/05/2013 | Lượt xem: 1511 | Lượt tải: 1download
Bạn đang xem nội dung tài liệu Khóa luận Phát triển ứng dụng chia sẻ file ngang hàng, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Dương Khánh Chương PHÁT TRIỂN ỨNG DỤNG CHIA SẺ FILE NGANG HÀNG KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công nghệ thông tin Hà Nội - 2006 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Dương Khánh Chương PHÁT TRIỂN ỨNG DỤNG CHIA SẺ FILE NGANG HÀNG KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công nghệ thông tin Cán bộ hướng dẫn: T.S Nguyễn Đại Thọ HÀ NỘI - 2006 Tóm tắt Các hệ thống chia sẻ file ngang hàng đang có những bước phát triển mạnh mẽ trong những năm gần đây. Trong kiến trúc client/server, tất cả các tài nguyên đều tập trung vào một chỗ, các điểm nút chỉ truy nhập vào đó chứ hầu như không bao giờ giao tiếp với nhau. Ngược lại, các điểm nút tham gia vào mạng ngang hàng đều có thể chứa tài nguyên và khi phát hiện ra nhau là trao đổi trực tiếp với nhau không thông qua server. Các hệ thống ngang hàng hiện nay được tổ chức theo một trong hai mô hình : thuần túy hoặc lai ghép. Mô hình ngang hàng thuần túy giải quyết vấn đề tìm kiếm tài nguyên dựa vào một mạng lưới các điểm nút đầu mối. Trong khi đó, mô hình ngang hàng lai ghép lưu địa chỉ nguồn cung cấp tài nguyên trên các server chỉ mục. Nội dung khóa luận phát triển, xây dựng thử nghiệm một số hệ thống chia sẻ file ngang hàng theo phương thức sử dụng nhiều server chỉ mục. Các server được tổ chức liên kết với nhau theo chuỗi hay bằng cách sao lặp toàn bộ. Trong hệ thống liên kết chuỗi, mỗi server chỉ lưu lại chỉ mục của các điểm nút do nó quản lý. Trong hệ thống sao lặp toàn bộ, các server lưu lại chỉ mục của tất cả các điểm nút, bất kể điểm nút đó thuộc chức năng quản lý của server nào. Ứng dụng được phát triển bằng công nghệ .NET. Hiệu năng của hai mô hình sẽ được so sánh đánh giá thông qua lý thuyết và thực nghiệm. Mục lục Chương 1. Giới thiệu 1.1 Bối cảnh chung Bạn hãy tưởng tượng về một hệ thống lưu trữ thông tin lý tưởng dành cho toàn cầu. Hệ thống có thể nhanh chóng xác định và gửi đi một tệp tin (có thể dung lượng rất lớn) trong số hàng triệu tệp tin tới bất cứ đâu trên thế giới. Để đảm bảo được tính năng này, hệ thống có thể có khả năng tự cài đặt cấu hình, tự hồi phục sau sự cố chứ không theo cơ chế “kiểm soát từ trung tâm” như các hệ thống lưu trữ hiện đang phổ dụng. Ngoài ra, hệ thống còn phải bảo mật, hỗ trợ đồng thời hàng triệu người sử dụng, có khả năng “miễn dịch” trước các cuộc tấn công- cả tấn công vật lý và tấn công thông qua các phần mềm, đoạn mã nguy hại. Đương nhiên, các nhà quản trị luôn “mơ” về một hệ thống như vậy, đặc biệt là khi mạng Internet ngày càng trở thành một nhân tố quan trọng quyết định thành công trong kinh doanh. Trên thực thế, hệ thống lý tưởng ấy thực chất đã và đang tồn tại dưới dạng các mạng chia sẻ ngang hàng (ví dụ eDonkey, KaZaA). Nhìn từ góc độ kỹ thuật, “peer-to-peer” hay mạng ngang hàng chỉ khả năng tương tác trực tiếp giữa hai máy tính cùng cài đặt một phần mềm ứng dụng mà không phải thông qua các máy tính trung gian. Mô hình kết nối có thể khiến nhiều người liên tưởng tới mạng Internet, tuy nhiên mạng ngang hàng mang các đặc thù riêng. Ngược dòng thời gian, ban đầu mạng Internet được thiết kế theo mô hình phi tập trung. Tuy nhiên càng ngày Internet càng biến đối theo hướng “một trục- nhiều que” (hub-and-spoke). Các máy tính cá nhân trong mạng lưới kết nối với server ở trung tâm để tiến hành các tác vụ như gửi/nhận email, duyệt web v.v… Mạng từng bao gồm nhiều máy tính ngang hàng, vừa sản xuất vừa tiêu thụ nội dung, nay không khác gì những chiếc tivi đón chờ tín hiệu từ trạm thu phát. Mạng ngang hàng kết nối trực tiếp các máy tính với nhau, và ngay sau khi kết nối, các máy tính cá nhân có thể thực thi những tác vụ mà chúng không thể thực hiện được khi đứng một mình. Hầu hết các hệ thống mạng ngang hàng cho phép người sử dụng chia sẻ tài nguyên, bao gồm cả khả năng xử lý, khả năng lưu trữ và băng thông. Trong trường hợp chia sẻ tệp tin âm nhạc, người sử dụng thực tế đã chia sẻ hệ thống các tệp tin mà qua đó, mọi đối tượng tham gia mạng đều có thể tải về các tệp tin âm nhạc mà mình yêu thích. Theo thống kê của CacheLogic (công ty dịch vụ P2P có trụ sở tại Anh), hơn 50% giao thông mạng xuất phát từ các ứng dụng chia sẻ ngang hàng. “P2P là bước tiến hoá hoàn toàn tự nhiên và hoàn hảo của mạng Internet. Thực tế, P2P đã mang Internet trở lại nguyên bản- theo đúng ý tưởng của những người đầu tiên sáng lập ra Internet”, Ian Clarke- sáng lập viên mạng FreeNet khẳng định. Hiện nay mạng ngang hàng đang ngày càng phát triển và những tài nguyên mới nhất thường được chia sẻ đầu tiên tại các mạng ngang hàng. Một ví dụ nhỏ, phần lớn các công ty kinh doanh trò chơi trực tuyến hiện nay khi cung cấp trò chơi đến khách hàng bên cạnh đường dẫn download trực tiếp từ server của công ty đều cung cấp khả năng cho phép khách hàng download từ mạng ngang hàng nhằm tránh sự tắc nghẽn tại server. Mục đích của khóa luận Mục đích khóa luận này là xây dựng một số hệ thống chia sẻ file ngang hàng dựa trên nhiều server chỉ mục. Phần xây dựng tại server và chương trình tại điểm nút được xây dựng trên nền .Net của Microsoft, các thành phần giao tiếp với nhau qua các webservice. Sau khi xây dựng thành công hệ thống, chúng tôi đề xuất một số công thức lý thuyết nhằm so sánh hiệu năng của các mô hình. Tiếp theo chúng tôi xây dựng và chạy chương trình thử nghiệm để đánh giá kết quả thực hiện trên thực tế rồi so sánh và đánh giá các kết quả lý thuyết đã trình bày trước đó. Tài liệu [5] cung cấp một bức tranh toàn cảnh về những nền tảng công nghệ và các lĩnh vực ứng dụng của kiến trúc mạng ngang hàng. Bài báo [6] đi sâu khảo sát các kết quả nghiên cứu và triển khai trong lĩnh vực chia sẻ file ngang hàng. Các hệ thống chia sẻ file ngang hàng sử dụng server chỉ mục được phân tích đánh giá chi tiết trong [1]. Báo cáo [4] thảo luận các phương pháp tạo chỉ mục tìm kiếm trong một bối cảnh rộng hơn, bao gồm cả những hệ thống ngang hàng hoàn toàn phi tập trung, không dựa trên server tạo chỉ mục tập trung. Bố cục khóa luận Phần tiếp theo của khóa luận được tổ chức như sau: Chương 2 giới thiệu các mô hình chia sẻ mạng ngang hàng và giới thiệu Napster- một phần mềm chia sẻ mạng ngang hàng tiêu biểu. Chương 3 trình bày nguồn gốc ý tưởng và cấu trúc các hệ thống chia sẻ ngang hàng sử dụng nhiều server chỉ mục, bao gồm phần xây dựng server và xây dựng chương trình tại điểm nút. Chương 4 minh họa 2 mô hình tổ chức sử dụng nhiều server chỉ mục đã xây dựng ở trên. Chương 5 trình bày phương pháp đánh giá về mặt lý thuyết và chương trình thử nghiệm thực tế. Cuối cùng là kết luận và phương hướng phát triển tiếp theo. Chương 2. Các mô hình mạng chia sẻ file ngang hàng Mô hình mạng ngang hàng thuần túy Mô hình mạng ngang hàng thuần túy hoàn toàn không phụ thuộc vào server. Một ứng dụng mạng ngang hàng thuần túy có khả năng tự động tìm các nút khác một cách linh hoạt, ko cần sự giúp đỡ của server. Việc liên lạc giữa các nút bao gồm download và upload các file, các hoạt động trực tuyến, gửi yêu cầu – đáp trả yêu cầu,… Tính năng này của mô hình mạng ngang hàng phá vỡ các phương thức truyền thống trong mô hình client/server. Mạng ngang hàng thuần túy cho phép người dùng thiết lập những quy tắc cho chính họ, thiết lập môi trường mạng cho chính họ. Mạng ngang hàng thuần túy cung cấp các tính năng “nối và chạy” khi làm việc với internet, bạn chỉ cần kết nối với internet là có thể sử dụng các tiện ích mạng ngang hàng. Một lợi thế khác của thuần mạng ngang hàng là mô hình không chỉ hoạt động hiệu quả trên internet mà còn hoạt động hiệu quả trên mạng cục bộ Lan, intranet. Tuy nhiên, vấn đề khó khăn nhất với mô hình mạng ngang hàng thuần túy là việc tìm các nút trong mạng. Do không có bất kỳ trung tâm quản trị quản lý các nút khi các nút đăng nhập, người dùng buộc phải tự mình xác định các nút khác. Hình 1. Mô hình mạng ngang hàng thuần túy Mô hình lai ghép Trong mô hình mạng ngang hàng lai ghép, một hay nhiều server được bổ sung. Tuy nhiên server chỉ đóng vai trò giúp các nút tìm kiếm nhau được dễ dàng, giải quyết khó khăn mô hình thuần túy gặp phải. Mỗi khi một nút đăng nhập/thoát khỏi hệ thống, nút đó sẽ kết nối với máy chủ và đăng ký, server sẽ lưu lại chỉ mục về nút đó. Khi một nút cần tìm các dịch vụ/tài nguyên tại các nút khác, người dùng sẽ hỏi server, server dựa trên chỉ mục đã lưu để trả về địa chỉ các nút thỏa mãn yêu cầu. Sau đó, các nút sẽ kết nối với nhau và lúc này máy chủ sẽ không đóng bất kỳ vai trò nào, việc cung cấp/sử dụng tài nguyên/dịch vụ hoàn toàn giữa các nút với nhau. Hình 2. Mô hình mạng ngang hàng lai ghép Trong mô hình chia sẻ mạng ngang hàng lai ghép, nhằm tăng tối đa số người dùng, người ta thường sử dụng nhiều server chỉ mục. Tùy theo vai trò cũng như sự liên kết giữa các serve, người ta chia thành nhiều kiến trúc, trong báo cáo này, chúng tôi tập trung nghiên cứu về 2 kiến trúc sau: Kiến trúc liên kết chuỗi: Các server liên kết với nhau thành chuỗi để trả lời các truy vấn của điểm nút. Khi một điểm nút đăng nhập, chỉ có một server cập nhật chỉ mục thông tin về nút đó. Khi 1 điểm nút yêu cầu tìm kiếm tài nguyên, nếu máy chủ cục bộ không tìm thấy số lượng tài nguyên đáp ứng đủ yêu cầu, nó sẽ chuyển yêu cầu đó đến các server khác trong chuỗi. Các server khác sẽ tìm kiếm trong chỉ mục của chính nó và trả lại kết quả cho server đầu tiên. Việc tìm kiếm được chuyển đi giữa các server cho đến khi nào kết quả thỏa mãn yêu cầu (về số lượng kết quả) hoặc các server đều đã tham gia tìm kiếm. Trong mô hình này, việc đăng nhập thực hiện nhanh do chỉ diễn ra ở trên một server nhưng việc tìm kiếm tốn nhiều thời gian do các server trong chuỗi đều thực hiện. Khi xác suất tìm thấy tài liệu tại các server là thấp, thời gian tìm kiếm trung bình tăng lên do việc tìm kiếm phải thực hiện ở nhiều server. Kiến trúc sao lặp chỉ mục toàn bộ: Trong kiến trúc này, mỗi khi một điểm nút thuộc một server đăng nhập, thông tin chỉ mục của nó sẽ được cập nhật tại server đó, đồng thời server này sẽ chuyển thông tin chỉ mục tới toàn bộ các server khác để tất cả các server đều cập nhật thông tin về điểm nút. Vì vậy mỗi khi 1 điểm nút đăng nhập, tất cả các server đều câp nhật chỉ mục và tốn nhiều thời gian, chi phí. Bù lại, khi 1 điểm nút yêu cầu tìm kiếm tài nguyên, thời gian tìm kiếm sẽ nhanh do chỉ phải thực hiện tại 1 server (vì tất cả các server đều có đầy đủ thông tin, không cần thiết phải hỏi lẫn nhau). Thời gian tìm kiếm không phụ thuộc vào xác suất có tìm thấy tài liệu hay không. Mô hình này hiệu quả khi thông tin chỉ mục ít, khối lượng lưu trữ không lớn Phần mềm chia sẻ file ngang hàng tiêu biểu – Napster Napster [7] được Shawn Fanning (19 tuổi) viết ra vào năm 1999. Mô hình Napster tập trung vào việc chia sẻ các file nhạc MP3. Khi bạn cần tìm kiếm 1 bài hát, bạn mở ứng dụng Napster, ứng dụng đăng nhập vào server trung tâm qua internet. Server lưu giữ chỉ mục của tất cả các người dùng khác, lưu trữ cấu trúc thư mục chứa các file MP3 của người dùng. Các thông tin này được tự động cập nhật lại mỗi khi người dùng đăng nhập vào hệ thống. Khi bạn gửi yêu cầu tìm kiếm, server của Napster sẽ tìm kiếm trong chỉ mục của các người dùng đang online và liệt kê các người dùng có chứa bài hát bạn yêu cầu. Sau đó bạn có thể chọn bất kỳ kết quả nào trong danh sách và liên kết trực tiếp tới người dùng đó, kể từ đây máy chủ không còn vai trò nữa, việc download file là giữa 2 người dùng. Chính vì vậy không có bất kỳ một file nhạc nào được lưu trực tiếp trên máy phục vụ. Napster không bán, không lưu trữ, không chuyển các file nhạc, máy phục vụ Napster chỉ giúp bạn tìm file nhạc trong máy của người khác và giúp bạn kết nối với điểm nút khác. Napster chính là một ví dụ điển hình của hệ thống chia sẻ file lai ghép sử dụng server chỉ mục. Napster sử dụng nhiều server chỉ mục để tăng hiệu quả nhưng mỗi server chỉ quản lý những điểm nút của mình và các server không “giao tiếp” với nhau. Chính vì vậy 2 người dùng thuộc 2 server khác nhau sẽ không kết nối được với nhau. Chương 3. Xây dựng hệ thống Nguồn gốc ý tưởng Ý tưởng thực hiện hệ thống chia sẻ file ngang hàng với nhiều server chỉ mục được chúng tôi bắt đầu từ việc nghiên cứu cuốn sách [3]. Cuốn sách đề cập đến việc xây dựng một hệ thống chia sẻ file ngang hàng lai ghép có sử dụng 1 server chỉ mục Cấu trúc chương trình gồm có: Server: Được viết bằng ngôn ngữ ASP, cung cấp các dịch vụ: Login, logout, liệt kê các điểm nút, tìm kiếm tài nguyên trên các điểm nút. Các điểm nút truy vấn máy chủ qua yêu cầu HTTP (vd:localhost/listuser.asp), server thực thi và trả về dưới dạng XML. Điểm nút: gồm 2 thành phần riêng biệt Trình duyệt (Browser): Cho phép người dùng login và logout, cho phép điểm nút khai báo với server các file nó muốn chia sẻ. Nó cũng đảm nhiệm công việc gửi file đến trình đón nhận của các điểm nút khác.. Hình 3. Kiến trúc hệ thống chia sẻ file ngang hàng lai ghép với 1 server Trình đón nhận (Listener): chức năng yêu cầu server tìm kiếm địa điểm lưu các file cần tải về. Sau khi nhận được danh sách các điểm nút chứa file yêu cầu, người dùng có thể chọn một điểm nút bất kỳ trong danh sách. Trình đón nhận sẽ kết nối với trình duyệt của điểm nút tương ứng để tải file về. Việc mở rộng cải tiến chương trình nhắc tới ở trên để hỗ trợ nhiều server là không khả thi do hạn chế của ngôn ngữ ASP (các server viết bằng ngôn ngữ ASP được ví như các ốc đảo, không thể giao tiếp được với nhau). Ngoài ra phần chương trình điểm nút được tách làm 2 phần dẫn đến khó sử dụng và dễ gây hiểu nhầm. Vì vậy, chúng tôi xây dựng lại hoàn toàn hệ thống chia sẻ file ngang hàng với nhiều server chỉ mục trên nền công nghệ .NET. Các điểm nút truy vấn server và các server giao tiếp với nhau thông qua các Webservice. Webservice có khả năng hỗ trợ rất tốt tương tác giữa các máy tính kết nối với Internet mặc dù các máy tính đó có thể chạy trên những môi trường phần cứng và phần mềm khác nhau, ở những địa điểm cách biệt nhau. Nhờ sử dụng giao thức HTTP, Webservice có thể hoạt động thông suốt, vượt qua cả rào cản tường lửa các cơ quan, xí nghiệp thường dựng lên để bảo vệ mạng cục bộ khỏi sự xâm nhập từ bên ngoài và kẽ hở từ bên trong. Hệ thống chia sẻ ngang hàng lai ghép sử dụng nhiều server chỉ mục Mục đích: Xây dựng hệ thống chia sẻ file ngang hàng lai ghép sử dụng nhiều server chỉ mục theo 2 mô hình: Mô hình sao lặp chỉ mục toàn bộ và mô hình liên kết chuỗi. Phần xây dựng hệ thống tại server được chúng tôi xây dựng hoàn toàn trên asp.net có tham khảo cách phân tích thiết kế của [3]. Phần xây dựng chương trình tại điểm nút được chúng tôi xây dựng bằng VB.net, trong đó phần kết nối và lấy tài liệu giữa các điểm nút được tham khảo từ [2]. Như đã phân tích ở trên, điểm khác nhau cơ bản của hai mô hình là ở phần server: quá trình cập nhật chỉ mục và quá trình tìm kiếm. Do đó chương trình của cả 2 hệ thống đều có thành phần chung như sau Cơ sở dữ liệu: Gồm 2 bảng Bảng cơ sở dữ liệu “peer” lưu trữ các thông tin về điểm nút: ip của điểm nút, tên đăng nhập của điểm nút, tình trạng và thời gian đăng nhập của điểm nút Bảng cơ sở dữ liệu “share” lưu trữ các tài nguyên điểm nút chia sẻ: ip của điểm nút và tên file điểm nút đó chia sẻ. Như vậy server chỉ lưu các chỉ mục, thông tin về điểm nút, hoàn toàn không lưu trữ các file chia sẻ. Đặc tả các webservice server cung cấp Webservice Login : Tham số là địa chỉ IP và tên người dùng đăng nhập. Server trả về kết quả cho biết việc đăng nhập thành công hay không. Public Function Login(ByVal ip_address As String, ByVal user_name As String) As Boolean Webservice Logout : Tham số là địa chỉ IP của điểm nút muốn đăng thoát. Server trả về kết quả cho biết việc đăng thoát có thành công hay không. Public Function Logout(ByVal ip_address As String) As Boolean Webservice Share : Tham số là địa chỉ IP và danh sách các file điểm nút muốn chia sẻ. Server trả về kết quả cho biết việc chia sẻ thành công hay không. Public Function Share(ByVal ip_address As String, ByVal file_list As Dataset) As Boolean Webservice Find : Tham số là từ khóa cần tìm. Server trả về một Dataset chứa địa chỉ IP và tên người dùng của các điểm nút có chia sẻ file liên quan tới từ khóa. Public Function Find(ByVal key As String) As DataSet Phần xử lý trên server của các webservice phụ thuộc vào các server hoạt động theo mô hình liên kết chuỗi hay sao lặp toàn bộ. Tuy nhiên kết quả cuối cùng trả về là giống nhau trong cả hai trường hợp. Các điểm nút không phân biệt được các server vận hành theo cơ chế nào. Chương trình tại điểm nút: Hình 4. Chương trình chia sẻ file ngang hàng tại điểm nút Đối với điểm nút, việc hệ thống xây dựng theo mô hình liên kết chuỗi hay mô hình sao lặp toàn bộ đều hoàn toàn không hề ảnh hưởng, chương trình điểm nút là như nhau trong cả 2 trường hợp. Chương trình điểm nút cho phép người dùng chọn server mình kết nối, thực hiện log in, log out, tìm kiếm và lấy tài nguyên từ điểm nút khác. Việc kết nối giữa các điểm nút được xây dựng dựa trên thư viện bsfilesdk được đề cập tại [2]. Để sử dụng chương trình, người dùng gõ tên đăng nhập, chọn server và ấn nút Login (có thể thêm bớt danh sách server bằng cách ấn nút Thay đổi danh sách server). Sau khi kết nối với server, chương trình tự động gửi lên server danh sách các file điểm nút đó chia sẻ (là các file có trong thư mục của chương trình). Để tìm kiếm tài nguyên điểm nút khác, người dùng gõ từ khóa và ấn nút Tìm kiếm. Chương trình yêu cầu server tìm theo từ khóa và kết quả trả về sẽ được gửi dưới dạng dataset danh sách các điểm nút thỏa mãn. Khi người dùng chọn một điểm nút trong danh sách các điểm nút thỏa mãn, bảng bên dưới sẽ hiện ra các file điểm nút đó chia sẻ, người dùng chỉ cần chọn file thích hợp và ấn nút download để tải file về. Chương trình tại điểm nút được xây dựng như sau: Khi nguời dùng ấn nút Login để đăng nhập, chương trình gọi webservice Login (do server cũng cấp) với các tham số là tên người dùng và IP của điểm nút. Private Sub btnConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConnect.Click ok = ws.Login(FileSrv.LocalIP, txtUsername.Text) If ok Then MessageBox.Show("Đăng nhập thành công", "Thông tin") btnConnect.Enabled = False btnDisconnect.Enabled = True Else MessageBox.Show("Đăng nhập thất bại", "Thông tin") End If Sau khi quá trình đăng nhập thành công, chương trình gọi webservice share với tham số là IP của điểm nút và danh sách các file có trong thư mục chia sẻ. files = Directory.GetFiles(b) ws.Share(FileSrv.LocalIP, files) Tiếp theo chương trình tại điểm nút thực hiện mở cổng, lắng nghe yêu cầu lấy file từ điểm nút khác, khởi động vai trò như là server trong việc cung cấp dịch vụ với điểm nút khác. FileSrv.Start Khi người dùng yêu cầu tìm kiếm, chương trình gọi webservice Find tại server và nhận được kết quả dưới dạng dataset. Sau khi có kết quả, chương trình tách dữ liệu từ dataset nhận được và hiển thị danh sách các kết quả. Private Sub btnSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSearch.Click Dim dsUser As New DataSet dsUser = ws.Find(txtSearch.Text) lstResult.Items.Clear() If dsUser.Tables(0).Rows.Count = 0 Then MessageBox.Show("Không tìm thấy tài liệu thỏa mãn", "Thông tin") Else MessageBox.Show("Tìm kiếm thành công", "Thông tin") For i = 1 To dsUser.Tables(0).Rows.Count lstResult.Items.Add(dsUser.Tables(0).Rows(i).Item(0) & "(" & dsUser.Tables(0).Rows(i).Item(1) & ")") Next End Sub Khi người dùng chọn một điểm nút trong danh sách kết quả, chương trình sẽ kết nối tới điểm nút đó và lấy danh sách các file điểm nút đấy chia sẻ để hiển thị. Private Sub FileSrv_OnNeedListFolder(ByVal sender As Object, ByVal e As _ AxbsFileServerSDK.IBSFileSrvXEvents_OnNeedListFolderEvent) _ Handles FileSrv.OnNeedListFolder e.aOkay = True e.aRoot = App_Path() LogMsg("list folder " + PreSlash(e.aPath)) End Sub Sau khi nguời dùng chọn file mình muốn download từ phía điểm nút khác, chương trình yêu cầu và nhận file điểm nút kia chia sẻ. Private Sub FileSrv_OnNeedDownload(ByVal sender As Object, ByVal e As _ AxbsFil