1. Thiết kế kiến trúc hệ thống
Mô hình client – server
- Chương trình server là chương trình chờ đợi các kết nối từ client và cung cấp dịch vụ cho client .Nó cố thể được mô tả như sau :
- Tiến trình server được khởi động trên một hệ thống nào đó sau đó chờ đợi một tiến trình client kết nối đến yêu cầu dịch vụ.Tiến trình client được khởi động trên cùng hệ thống hoặc trên hệ thống khác và kết nối tới server qua mạng để yêu cầu một số dịch vụ nào đó (vd: đọc ghi file , chạy 1 chương trình)
2. Thiết kế chức năng hệ thống
Chức năng của Server : Server chạy thường trực trên một hệ thống và chờ đợi các kết nối từ Clients, quản lý các user ,đáp ứng các yêu cầu từ phía Clients
Chức năng của Clients : Clients chạy trên các máy trạm trong cùng hệ thống hoặc khác hệ thống kết nối tới Server qua mạng.Sau khi kết nối tới server, các Clients có thể trao đổi dữ liệu , thông điệp .
12 trang |
Chia sẻ: lynhelie | Lượt xem: 2026 | Lượt tải: 3
Bạn đang xem nội dung tài liệu Đồ án Xây dựng ứng dụng trao đổi dữ liệu trong mạng LAN, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
TRƯỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM
BỘ MÔN: CÔNG NGHỆ THÔNG TIN Độc lập - Tự do - Hạnh phúc
ĐỒ ÁN TỐT NGHIỆP
Xây dựng ứng dụng trao đổi dữ liệu trong mạng LAN
Sinh Viên : Nguyễn Khắc Nhất
Msv : 080240
Giáo viên hướng dẫn : Ths Đỗ Xuân Toàn
Lời nói đầu
Cùng với sự phát triển của hệ thống mạng internet thì hệ thống mạng nội bộ (LAN) của các công ty , các tổ chức cũng ngày càng nhiều. Và để tận dụng khả năng trao đổi thông tin và dữ liệu nhanh chóng,tiện lợi của mạng máy tính. Có nhiều chương trình đã được xây dựng như LANChat, Achat Vừa nhằm mục đích học hỏi tìm hiểu vừa nhằm xây dựng một ứng dụng trao đổi thông tin,dữ liệu đơn giản,giá rẻ, dễ sử dụng . Em đã chọn đề tài này để phát triển .Trong quá trình xây dựng đề tài cũng gặp phải những khó khăn nhất định , là một dề tài tương đối khó nếu xây dựng hoàn chỉnh , do hạn chế về mặt thời gian nên đề tài còn nhiều sai sót và chương trình demo mới chỉ giải quyết được một phần trong đề tài . Em hy vọng mình sẽ tiếp tục phát triển được đề tài này hoàn chỉnh hơn nữa . Em xin chân thành cảm ơn thầy cô và các bạn đã quan tâm giúp đỡ !
Nội dung báo cáo gồm
Tìm hiểu về ngôn ngữ lập trình Microsoft visual c#
Tìm hiểu về .Net Framework
Phân tích thiết kế hệ thống
1. Tìm hiểu lập trình mạng với C#
1.1. Tổng quan về C#
C# là một ngôn ngữ lập trình hướng đối tượng. Cấu trúc và lập luận của C# có đầy đủ các đặc tính của một ngôn ngữ lập trình hướng đối tượng trước đó (C++, Java). C# được thiết kế dùng cho nền .NET framework, một công nghệ mới và đầy triển vọng trong việc phát triển các ứng dụng hệ thống và mạng internet
C# là một trình biên dịch hướng .NET, nghĩa là tất cả các mã của C# luôn luôn chạy trên trên môi trường .NET Framework. . C# là một ngôn ngữ lập trình mới :
Nó được thiết kế riêng để dùng cho Microsoft's .NET Framework (Một nền khá mạnh cho sự phát triển, triển khai, hiện thực và phân phối các ứng dụng)
Nó là một ngôn ngữ hoàn toàn hướng đối tượng được thiết kế dựa trên kinh nghiệm của các ngôn ngữ hướng đối tượng khác.
Một điều quan trọng C# là một ngôn ngữ độc lập. Nó được thiết kế để có thể sinh ra mã đích trong môi trường .NET, nó không phải là một phần của .NET bởi vậy có một vài đặc trưng được hỗ trợ bởi .NET nhưng C# không hỗ trợ và có những đặc trưng C# hỗ trợ mà .NET không hỗ trợ.
1.2 Cấu trúc của một chương trình C#
Một chương trình C# bao gồm các thành phần như sơ đồ dưới đây:
- Các tệp *.cs là các tệp chứa mã nguồn của một chương trình C#
- Trong mỗi tệp *.cs, ta có các namespace (tương tự các gói-packages trong java). Nếu không có namespase thì một namespace mặc định anonymous được trình biên dịch tự cung cấp. Trong mỗi namespace, có thể có các cấu trúc (structs), các giao diện (Interfaces), các khai báo hằng (enums).
- Trong mỗi namespace, là phần mô tả các lớp đối tượng có trong chương trình.
2. Tổng quan về .Net Framework
.NET, nói một cách tổng quát, là một hệ thống tổng thể định nghĩa các phương thức về làm việc, lập trình cho máy PC
Khi trình thực thi, .NET được gọi để chạy một chương trình đã được chuyển đổi sang dạng IL, nó gọi một trình biên dịch tức thời (JITer) để biên dịch đoạn IL đó sang mã máy hoàn toàn để thực thi trên bộ vi xử lý của máy. Trình JITer làm việc rất nhanh và hiệu quả, cả việc không biên dịch các phần không được dùng đến của mã lện IL . Hệ thống sẽ cung cấp một trình biên dịch pre-JIT (tiền biên dịch) cho phép ta chuyển đổi IL thành mã máy thường trực, coi như tạo nên các tập tin thực thi .EXE hay .COM quen thuộc
Thư viện lớp cơ sở của .NET là một tập hợp lớn các lớp mã có quản được viết bởi Microsoft, những lớp này cho phép bạn thao tác rất nhiều các tác vụ sẵn có trong Windows. Bạn có thể tạo các lớp của mình từ các lớp có sẵn trong thư viện lớp cơ sở của .NET dựa trên cơ chế thừa kế đơn.
Namespace là cách mà .NET dùng để chống lại sự xung đột tên giữa các lớp.Một namespace không chỉ là một nhóm các kiểu dữ liệu, mà nó làm cho tên của tất cả các kiểu dữ liệu trong cùng một không gian tên sẽ có tiếp đầu ngữ là tên của namespace đó. Nó cũng cho phép một không gian tên nằm trong một không gian tên khác.
Trình biên dịch (Compiler)
Ngôn ngữ trung gian (Intermediate Language – IL)
preJIT Compiler (Tiền biên dịch)
econoJIT Compiler (JIT Kinh tế)
JIT Compiler (Trình biên dịch tức thời)
File thực thi .exe
Trình thực thi ngôn ngữ phổ quát
(OS) .NET Common Language Runtime – CLR
Phần cứng
Mức thấp
JScript
C++
Bộ khung của kiến trúc .NET (.NET FRAMEWORK) Mức cao
Các ngôn ngữ khác
Quá trình biên dịch trong .NET xảy ra theo hai bước :
- Dịch mã nguồn thành Microsoft Intermediate Language (MS-IL)
- Dịch IL thành mã nền cụ thể bởi CLR
3. PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
Thiết kế kiến trúc hệ thống
Mô hình client – server
- Chương trình server là chương trình chờ đợi các kết nối từ client và cung cấp dịch vụ cho client .Nó cố thể được mô tả như sau :
- Tiến trình server được khởi động trên một hệ thống nào đó sau đó chờ đợi một tiến trình client kết nối đến yêu cầu dịch vụ.Tiến trình client được khởi động trên cùng hệ thống hoặc trên hệ thống khác và kết nối tới server qua mạng để yêu cầu một số dịch vụ nào đó (vd: đọc ghi file , chạy 1 chương trình)
Thiết kế chức năng hệ thống
Chức năng của Server : Server chạy thường trực trên một hệ thống và chờ đợi các kết nối từ Clients, quản lý các user ,đáp ứng các yêu cầu từ phía Clients
Chức năng của Clients : Clients chạy trên các máy trạm trong cùng hệ thống hoặc khác hệ thống kết nối tới Server qua mạng.Sau khi kết nối tới server, các Clients có thể trao đổi dữ liệu , thông điệp .
Thiết kế giao diện
-Giao diện Server chạy dạng console vì tạm thời server chỉ chờ đợi các kết nối từ Clients và thông báo cho các Clients danh sách user dang logon , chuyênt tiếp thông điệp giữa các Clients. Nhưng để server thân thiện hơn và dễ dàng thực hiện nhiều chức năng được thiết kế hơn thì đề tài hướng đến xây dựng server với giao diện đồ họa
-Giao diện Clients : xây dựng dạng đồ họa dễ dàng thao tác và sử dụng , thân thiện hơn với người dùng .
Thiết kế các Module
Modul 1 : Tạo các kết nối giữa Client và Server .
Xây dựng chức năng quản lý và lắng nghe các yêu cầu kết nối và chấp nhận kết nối giữa Client và Server. Module này cho phép ta kết nối 2 máy tính lại với nhau thông qua một địa chỉ cổng (Port ) và địa chỉ IP. Qua đó mà server và client có thể trao đổi thông tin với nhau .
private static int globalPortNo = 10000;
Đầu tiên số hiêu cổng TCP sẽ được gửi cho Client ...và nó sẽ tăng giá trị này lên mỗi khi có một Client mới logon
Module 2: Quan lý danh sách các Client đang kết nối .
Module này trên Server sẽ lấy danh sách các Client đang kết nối tới nó . Và gửi danh sách này cho các Client .Khi có Client nào đó Logoff khỏi hệ thống thì danh sách này sẽ được update lại và chuyển cho các Client .
Module 3: Truyền – nhận thông điệp
Module này cho phép các Client khi đã logon vào hệ thống có thể gửi và nhận thông điệp cho nhau .Các Client có thể gửi – nhận thông điệp từ một Client khác hoặc từ tất cảc Client có trong hệ thống . Khi có một thông điệp được gửi tới từ Client thì Server sẽ nhận và chuyển tiếp lại cho Client được yêu cầu nhận. Truyền và nhận thông điệp bao gồm cả truyền UserList từ Server cho các Client và Update danh sách này khi có Client mới logon hay có Client logoff . Để thực hiện việc xắp xếp UserList và hiển thị trên các Client , ServerConsole sử dụng một lớp là LinkedList . trong Project LinkedList để làm việc này .
Lớp TcpChannel : Cung cấp một Channel bổ sung cho việc sử dụng giao thức TCP để truyền các thông điệp .
Trong Project LinkedList.cs có lớp 2 Lớp là ListItem và LinkedList trong đó thì lớp LinkedList kế thừa các thuộc tính và phương thức của lớp ListItem
Module 4 : Hủy bỏ kết nối Logoff khỏi hệ thống
Client khi Logoff khỏi hệ thống thì sẽ không tham gia được vào quá trình truyền và nhận thông điệp .
Chương trình demo
-Chương trình demo xây dựng với Visual C# 2005
-Server lắng nghe các kết nối từ Clients và gửi cho các Clients danh sách các user kết nối
-Clients sau khi kết nối vào hệ thống có thể gửi thông điệp cho các Clients khác theo dạng broadcast và unicast
-Thông điệp từ các Clients sẽ được chuyển tiếp qua server tới Clients nhận
Server chạy dưới dạng Console
Client chạy dưới dạng Window Application
Trong Server TextBox , nhập vào tên của máy chạy Server . Nếu Client và Server chạy trên cùng một máy ta có thể để tên là “Localhost”.
Trog Username Textbox , điền username mà ta muốn sử dụng .Server sẽ kiểm tra tên này , nếu nó đã được sử dụng rồi thì sẽ yêu cầu bạn lấy username khác ..
Click Logon . Nếu bất kỳ textbox nào ở trên còn để trống thì chương trình sẽ yêu cầu điền vào các textbox cần thiết .
Bạn có thể gửi thông điệp theo một trong 2 cách sau :
Thư nhất : (BroadCast ) : Tích dấu vào ô kiểm Global , khi đó bạn không cần phải chọn một username cụ thể nào và thông điệp sẽ được gửi đến cho tất cả các Client đang connect tới Server
Nếu “Global ” checkbox không được kiểm và không có và không có username nào được chọn từ userlist thì khi bạn cố gắng gửi đi một thông điệp sẽ nhận được cảnh báo là phải chọn một user nào đó để gửi thông điệp
Dưới đây là giao diện chương trình khi gửi thông điệp theo kiểu BroadCast .Người gửi có username : Trung và người nhận là tất cả các user khác đang logon bao gồm user : Hang và Tuan
Thứ hai : (Unicast): Click vào username mà bạn muốn gửi thông điệp .Gõ vào thông điệp mà bạn muốn gửi trong ô MesageEntryBox . sau đó nhấn phím Enter hoặc SendMsg .
Dưới đây là giao diện chương trình khi gửi thông điệp theo kiểu Unicast . Người gửi là username : Trung , người nhận là username : Hằng , user name : Tuấn không nhận thông điệp này
Kết quả thực nghiệm
Thực nghiệm
- Yêu cầu : các máy chạy thử nghiệm phải cài đặt .DotNetFramework
- Chương trình ứng dụng demo được chạy thử tại phòng máy F102 trường ĐHDLHP trên 10 máy .
- Kết quả chạy thử bước đầu khá tốt , tạm thời chưa phát hiện ra lỗi .
Kết Luận : Vì đây là một đề tài khó và thời gian hạn chế nên em không thể xây dựng được hết các chức năng đã thiết kế cho chương trình. Dự kiến sẽ phát triển đề tài theo hướng sau :
- Xây dựng csdl cho server quản lý các user
- Thêm một số chức năng cho chương trình như : truyền file , truyền hình ảnh , truyền âm thanh
- Xây dựng và cải tiến giao diện cho Server và Clients thân thiện hơn .
Tài liệu tham khảo
[1] Richard Blum, C# Network Programming, Sybex © 2003, ISBN:0782141765
[2] Kỹ thuật lập trình C#, Biên dịch từ cuốn Professional C#, 2nd Edition, Xuất bản bởi Wrox Press Ltd .
[3] Andy Harris, Microsoft C# Programming for the Absolute Beginner, Premier Press © 2002, ISBN: 1931841160