Tìm hiểu ngơn ngữ lập trình C Sharp viết ứng dụng Chat mạng LAN LỜI CẢM ƠN Để hoàn thành luận văn tốt nghiệp trước hết, em xin cảm ơn thầy giáo, cô giáo Khoa Công nghệ thông tin Trường Đại học dân lập Hải Phòng người dạy dỗ, trang bị cho em kiến thức bổ ích bốn năm học vừa qua Em xin bày tỏ long biết ơn sâu sắc tới thầy Thạc sĩ Đỗ Văn Chiểu, người hướng dẫn , bảo tận tình để em hồn thành đồ án tốt nghiệp MSSV: 090086 – Trần Thị Hương- CT902 Tìm hiểu ngơn ngữ lập trình C Sharp viết ứng dụng Chat mạng LAN Mục lục 1.1.Lời nói đầu 1.2 Mạng nội - LAN (Local Area Netword) 1.3 Mơ hình Client – Server Chương Tìm hiểu C# 2.1 Tổng quan C# 2.2 Các thành phần 2.3 Cấu trúc chương trình C# 13 2.4 Lập trình mạng với C# 13 Sử dụng C# socket 16 2.5 Lập trình với C# Socket helper classes 17 2.6 Lập trình với thread 20 Chương Phân tích thiết kế chương trình 23 3.1 Cấu trúc chung chương trình 23 3.2 Phân tích thiết kế .24 3.2.1 Viết ứng dụng Client (ChatNDraw) .24 3.2.2 Viết ứng dụng Server (PrismServerAdmin) 27 Chương Chương trình thực nghiệm 30 4.1 Giao diện chương trình Server .30 4.2 Giao diện chương trình Client 31 Chương Tổng kết hướng phát triển đồ án 33 5.1 Những kết đạt được: .33 5.2 Những vấn đề tồn .33 5.3 Hướng phát triển đồ án 33 5.4 Tài liệu Tham khảo .33 MSSV: 090086 – Trần Thị Hương- CT902 Tìm hiểu ngơn ngữ lập trình C Sharp viết ứng dụng Chat mạng LAN CHƢƠNG 1: GIỚI THIỆU CHUNG 1.1.Lời nói đầu Với phát triển mạnh mẽ cơng nghệ thông tin ngày lớn mạnh, rộng khắp mạng máy tính tồn cầu Việc ứng dụng tin học vào lĩnh vực sống ngày quan tâm sử dụng hiệu quả,đem lại lợi ích lớn mặt đời sống Sự lớn mạnh mạng máy tính xóa bỏ ranh giới không gian thời gian để đem người tri thức xích lại gần Thơng qua mạng máy tính, người tiếp xúc với loại tri thức tri thức văn hóa, xã hội, khoa học kỹ thuật Nếu sử dụng Internet khơng lần nghe sử dụng dịch vụ chat, dịch vụ phổ biến nay, cho phép bạn thiết lập đối thoại thông qua máy vi tính với người dùng khác Internet Sau bạn thiết lập hệ thống này, bạn làm máy tính bạn gõ chữ, nói chuyện, hình ảnh , truyền liệu hiển thị máy ngược lại Dịch vụ chat vào lĩnh vực khác ứng dụng mạng cơng ty mạng riêng cơng ty hay mạng Internet Nó giúp cho quý giám đốc, người quản lý tốn nhiều công sức, thời gian cần thông báo việc đến nhân viên, việc quan trọng, khơng quan trọng, vấn đề bí mật,cả đến vấn đề riêng tư mà mà không sợ đồng nghiệp khác cấp biết Xuất phát từ lợi ích mà đem lại, với mong muốn tạo ứng dụng chat mạng LAN, giúp ngưoif trao đổi thông tin với lên em chọn đề tài: ― Tìm hiểu ngơn ngữ C Sharp viết ứng dụng chát mạng LAN ‖ 1.2 Mạng nội - LAN (Local Area Netword) Mạng nội nhóm máy tính thiết bị tin học kết nối với khu vực địa lý nhỏ tòa nhà, văn phòng, khn viên trường đại học, khu giải trí, Đặc điểm mạng nội MSSV: 090086 – Trần Thị Hương- CT902 Tìm hiểu ngơn ngữ lập trình C Sharp viết ứng dụng Chat mạng LAN - Băng thơng lớn có khả chạy ứng dụng trực tuyến xem phim, hội thảo qua mạng - Phạm vi bị giới hạn thiết bị - Chi phí thiết bị triển khai mạng tương đối rẻ - Dễ quản lý Các mạng LAN trở nên thơng dụng cho phép người sử dụng (users) dùng chung tài nguyên quan trọng máy in , ổ đĩa CD-ROM, phần mềm ứng dụng thông tin cần thiết khác Bởi công ty lớn việc mở rộng quy mô hệ thống mạng quan trọng phải đáp ứng u cầu trao đổi thơng tin cách nhanh chóng, hiệu quả, tiết kiệm chi phí 1.3 Mơ hình Client – Server Thuật ngữ server dùng cho chương trình thi hành dịch vụ tồn mạng Các chương trình server chấp nhận tất yêu cầu hợp lệ đến từ nơi mạng, sau thi hành dịch vụ trả kết máy yêu cầu Một chương trình coi client gửi yêu cầu tới máy có chương trình server chờ đợi câu trả lời từ server Chương trình server client nói chuyện với thông điệp (messages) thông qua cổng truyền thông liên tác IPC (Interprocess Communication) Để chương trình server chương trình client giao tiếp với chúng phải có chuẩn để nói chuyện, chuẩn gọi giao thức Nếu chương trình client muốn u cầu lấy thơng tin từ server phải tn theo giao thức mà server đưa Bản thân cần xây dựng mơ hình client/server MSSV: 090086 – Trần Thị Hương- CT902 Tìm hiểu ngơn ngữ lập trình C Sharp viết ứng dụng Chat mạng LAN cụ thể ta tự tạo giao thức riêng thường làm điều tầng ứng dụng mạng Với phát triển mạng có nhiều giao thức chuẩn mạng đời nhằm đáp ứng nhu cầu phát triển Các giao thức chuẩn (ở tầng mạng vận chuyển) sử dụng rộng rãi như: giao thức TCP/IP, giao thức SNA IBM, OSI, ISDN, X.25 giao thức LAN-to-LAN NetBIOS Một máy tính chứa chương trình server coi máy chủ hay máy phục vụ (server) máy chứa chương trình client coi máy tớ (client) Mơ hình mạng có máy chủ máy tớ giao tiếp với theo nhiều dịch vụ gọi mơ hình client/server Thực tế mơ hình client/server mở rộng tự nhiên tiện lợi cho việc truyền thơng liên tiến trình máy tính cá nhân Mơ hình cho phép xây dựng chương trình client/server cách dễ dàng sử dụng chúng để liên tác với để đạt hiệu Mơ hình chuẩn cho ứng dụng mạng mơ hình client-server.Trong mơ hình máy tính đóng vai trò client máy tính có nhu cầu cần phục vụ dịch vụ máy tính đóng vai trò server máy tính đáp ứng yêu cầu dịch vụ từ client Khái niệm client-server mang tính tương đối, điều có nghĩa máy lúc đóng vai trò client lúc khác lại đóng vai trò server Nhìn chung, client máy tính cá nhân, Server máy tính có cấu hình mạnh có chứa sở liệu chương trình ứng dụng để phục vụ dịch vụ từ yêu cầu client Như hình sau: Cách thức hoạt động mơ hình client-server sau: tiến trình server khởi tạo trạng thái chờ yêu cầu từ tiến trình client, tiến trình client khởi tạo hệ thống hệ thống khác kết nối thông qua mạng, MSSV: 090086 – Trần Thị Hương- CT902 Tìm hiểu ngơn ngữ lập trình C Sharp viết ứng dụng Chat mạng LAN tiến trình client thường khởi tạo lệnh từ người dùng Tiến trình client yêu cầu gửi chúng qua mạng tới server để yêu cầu phục vụ dịch vụ Tiến trình server thực việc xác định yêu cầu hợp lệ từ lient sau phục vụ trả kết tới client tiếp tục chờ đợi yêu cầu khác Một số kiểu dịch vụ mà server cung cấp như: dịch vụ thời gian (trả yêu cầu thông tin thời gian tới client), dịch vụ in ấn (phục vụ yêu cầu in client), dịch vụ file (gửi, nhận thao tác file cho client), thi hành lệnh từ client server MSSV: 090086 – Trần Thị Hương- CT902 Tìm hiểu ngơn ngữ lập trình C Sharp viết ứng dụng Chat mạng LAN CHƢƠNG 2: TÌM HIỂU VỀ C# 2.1 Tổng quan C# C# ngơn ngữ lập trình hướng đối tượng, cấu trúc lập luận C# có đầy đủ đặc tính ngơn ngữ lập trình hướng đối tượng trước (C++, Java) C# thiết kế dung cho Net framework, công nghệ đầy triển vọng việc phát triển ứng dụng hệ thống mạng internet… C# trình biên dịch hướng Net, nghĩa tất mã C# luôn chạy môi trường Net Framework C# ngôn ngữ lập tình mới: - Nó thiết kế riêng để dùng cho Microsoft’s Net Framework ( Một mạnh cho phát triển, triển khai, thực phân phối ứng dụng ) - Nó ngơn ngữ hồn tồn hướng đối tượng thiết kế dựa kinh nghiệm ngôn ngữ hướng đối tượng khác Một điếu quan trọng C# ngôn ngữ độc lập Nó thiết kế để sinh mã đích mơi trường Net, khơng phải phần Net có vài đặc trưng hỗ trợ Net không hỗ trợ có đặc trưng C# hỗ trợ mà Net không hỗ trợ 2.2 Các thành phần 2.2.1 Biến +) Một biến dùng để lưu trữ giá trị mang kiểu liệu Cú pháp C# sau để khai báo biến : [ modifier ] datatype identifer ; Với modifier từ khoá : public, private, protected, datatype kiểu liệu (int , long , float ) identifier tên biến MSSV: 090086 – Trần Thị Hương- CT902 Tìm hiểu ngơn ngữ lập trình C Sharp viết ứng dụng Chat mạng LAN Để tạo biến phải khai báo kiểu biến gán cho biến tên Biến khởi tạo giá trị khai báo, hay gán giá trịmới vào lúc chương trình 2.2.2 Hằng Hằng biến giá trị không thay đổi Biến công cụ mạnh,tuy nhiên làm việc với giá trị định nghĩa không thay đổi, ta phải đảm bảo giá trị khơng thay đổi suốt chương trình 2.2.3 Định danh Định danh tên mà người lập trình định cho kiểu liệu, phương thức, biến, hằng, hay đối tượng Một định danh phải bắt đầu với ký tự chữ hay dấu gạch dưới,các ký tự lại phải ký tự chữ cái, chữ số, dấu gạch dưới.Theo qui ước đặt tên Microsoft đề nghị sử dụng cú pháp lạc đà (camel notation) bắtđầu ký tự thường để đặt tên cho biến cú pháp Pascal (Pascal notation) với ký tự hoa cho cách đặt tên hàm hầu hết định danh lại Các định danh khơng trùng với từ khố mà C# đưa ra, khơng thể tạo biến có tên class hay int Ngồi ra, C# phân biệt ký tự thường ký tự hoa C# xem hai biến bienNguyen bienguyen hoàn toàn khác 2.2.4 Kiểu liệu C# ngơn ngữ lập trình mạnh kiểu liệu, ngôn ngữ mạnh kiểu liệu phải khai báo kiểu đối tượng tạo (kiểu số nguyên, số thực, kiểu chuỗi, kiểu điều khiển ) trình biên dịch giúp cho người lập trình không bị lỗi cho phép loại kiểu liệu gán cho kiểu liệu khác Kiểu liệu đối tượng tín hiệu để trình biên dịch nhận biết kích thước đối tượng C# chia thành hai tập hợp kiểu liệu chính: Kiểu xây dựng sẵn (built- in) mà ngơn ngữ cung cấp cho người lập trình kiểu người dùng định nghĩa(user-defined) MSSV: 090086 – Trần Thị Hương- CT902 Tìm hiểu ngơn ngữ lập trình C Sharp viết ứng dụng Chat mạng LAN người lập trình tạo C# phân tập hợp kiểu liệu thành hai loại: Dữ liệu kiểu trị kiểu qui chiếu Nghĩa chương trình C# liệu lưu trữ hai nơi tuỳ theo đặc thù kiểu liệu Việc phân chia khác lưu kiểu liệu giá trị kiểu liệu tham chiếu nhớ Đối với kiểu liệu giá trị lưu giữ kích thước thật nhớ cấp phát stack Trong địa kiểu liệu tham chiếu lưu stack đối tượng thật lưu nhớ heap C# hỗ trợ kiểu trỏ (pointer type) giống C++ dùng đến dùng làm việc với đoạn mã unmanaged Đoạn mã unmanaged đoạn mã đuợc tạo sàn diễn NET, chẳng hạn đối tượng COM Kiểu giá trị định nghĩa trước (Predefined Value Types) Kiểu liệu bẩm sinh (The built-in value types) trình bày ban đầu integer floating-point numbers, character, Boolean types 2.2 Câu lệnh 2.2.5.1)Câu lệnh điều kiện - Câu lệnh điều kiện if : Cú pháp sau: if (biểu thức điều kiện) [else ] -Câu lệnh switch Các câu lệnh if nằm lồng khó đọc, khó gỡ rối Khi bạn có loạt lựa chọn phức tạp nên sử dụng câu lệnh switch MSSV: 090086 – Trần Thị Hương- CT902 Tìm hiểu ngơn ngữ lập trình C Sharp viết ứng dụng Chat mạng LAN Cú pháp nhƣ sau: switch (biểu thức) { casce biểu thức ràng buộc: câu lệnh câu lệnh nhảy [default: câu lệnh mặc định] } 2.2.5.2)Vòng lặp C# cung cấp cho vòng lặp khác (for, while, while, foreach)cho phép thực đoạn mã lặp lại đến điều kiện lặp - Vòng lặp for: cú pháp: for ([ phần khởi tạo] ; [biểu thức điều kiện]; [bước lặp]) - Vòng lặp while (The while Loop) Cú pháp sau : while (Biểu thức) - Vòng lặp while (The do…while Loop) while ( điều kiện ) -Vòng lặp foreach (The foreach Loop) Vòng lặp foreach cho phép tạo vòng lặp thơng qua tập hợp hay mảng Đây câu lệnh lặp khơng có ngơn ngữ C/C++ Câu lệnh foreach có cú pháp chung sau: MSSV: 090086 – Trần Thị Hương- CT902 10 Tìm hiểu ngơn ngữ lập trình C Sharp viết ứng dụng Chat mạng LAN Constructor UdpClient có khng dạng TcpClient—chúng cho phép ta định thông tin cân thiết để tạo UDP socket tham chiếu đến cổng UDP địa xa Phương thưc Receive() cho phép bạn nhận liệu cơng UDP Khơng có phiên kết nối thành lập, cổng UDP nhận liệu, bạn không cần biết từ đâu đến Để bù lại cho điều này, phương thức Receive() bao gồm tham số IPEndPoint chứa thông tin địa IP host xa Đối tượng UdpClient cài đặt sử dụng cổng UDP mà ứng dụng bạn muốn để nhận gói UDP Chú ý đối tượng UdpClient máy xa thiết lập sử dụng giá trị IPAddress.Any Giá trị sử dụng giá trị giả thay với thông tin từ phương thức Receive() Phương thức Send() có khn dạng Nếu đối tượng UdpClient tham chiếu tới host xa, phương thức Send() khơng cần định đích liệu Tuy nhiên, Nếu đối tượng UdpClient không tham chiếu tới host xa, phương thức Send() phải định địa đích Việc thực thơng qua đối tượng IPEndPoint, xâu hostname giá trị IP số hiệu cổng 2.6 Lập trình với thread Khi xây dựng ứng dụng Server ta ln muốn phải đáp ứng cho nhiều Client, ứng dụng Server cần có nhiều SocketClient phải thực chúng đồng thời Nhưng phương thức Receive() SocketClinet rơi vào trạng thái chờ đợi khơng có liệu kết nối mà quản lý kết nối xử lý khơng có liệu kết nối khác bị khóa Để giải vấn đề C# cung cấp cơng cụ lập trình Thread Lớp Net processThread namespace System.Diagnostics cho phép bạn truy nhập thread phạm vi tiến trình từ chương trình C# bạn Lớp processThread bao gồm nhiều thuộc tính phương thức sử dụng để đạt thông tin thread tiến trình thực thi MSSV: 090086 – Trần Thị Hương- CT902 20 Tìm hiểu ngơn ngữ lập trình C Sharp viết ứng dụng Chat mạng LAN Các tiến trình tạo nhiều threads Một thread xác định luồng đơn thực thi phạm vi chương trình Khi chương trình thực thi CPU, thực câu lệnh chương trình luồng đơn tới luồng hoàn thành Cho phép hai nhiều tác vụ thực Mỗi tác vụ thực thi luồng riêng Chương trình multithreaded tạo luồng thực thi luồng từ luồng chương trình Tất luồng tạo từ luồng cách chia sẻ khơng gian nhớ luồng Thông thường luồng thứ hai sử dụng để thực cơng việc tính tốn chương trình, cho phép luồng phản ứng với kiện Khơng có luồng thứ 2, người sử dụng khơng thể lựa chọn thực đơn nút lệnh chương trình tính tốn hàm tốn học Threads có vài trạng thái thực hiện, trạng thái định nghĩa sẵn trong.Net Các định nghĩa namespace System.Threading Bảng sau liệt kê trạng thái có thread hệ điều hành Windows ThreadState Initialized Ready Running Standby Terminated Transition Unknown Description The thread has been initialized but not started The thread is waiting for a processor The thread is currently using the processor The thread is about to use the processor The thread is finished and is ready to exit The thread is waiting for a resource other than the processor The system is unable to determine the thread state Wait The thread is not ready to use the processor Một thread đơn lẻ phải thay đổi trạng thái vài thời điểm q trình chạy nó, chuyển đổi trạng thái Running Standby, Transition, Wait Tự thân hệ điều hành đặt thread chạy chuyển sang trạng thái khác để thực thi thread khác có độ ưu tiên cao MSSV: 090086 – Trần Thị Hương- CT902 21 Tìm hiểu ngơn ngữ lập trình C Sharp viết ứng dụng Chat mạng LAN Lớp NET Framework’s ProcessThread Lớp NET ProcessThread namespace System.Diagnostics cho phép bạn truy nhập thread phạm vi tiến trình từ chương trình C# bạn Lớp ProcessThread bao gồm nhiều thuộc tính phương thức sử dụng để đạt thông tin thread tiến trình Bảng sau thuộc tính ProcessThread sẵn có để đạt thông tin luồng thực thi Property BasePriority Container CurrentPriority Id IdealProcessor PriorityBoostEnabled Description Gets the base priority of the thread Gets the IContainer that contains the thread object Gets the current priority of the thread Gets the unique thread identifier of the thread Sets the preferred processor for the thread to run on Gets or sets a value indicating whether the operating system should temporarily boost the priority of the thread when its main window has the focus PriorityLevel Gets or sets the priority level of the thread PrivilegedProcessorTime Gets the amount of time the thread has spent running code in the operating system core ProcessorAffinity Sets the processors that the thread can run on Site Gets or sets the ISite of the thread object StartAddress Gets the memory address of the function used to start the thread ThreadState Gets the current state of the thread TotalProcessorTime Gets the total amount of time the thread has spent using the processor UserProcessorTime Gets the amount of time the thread has spent running code in the application WaitReason Gets the reason the thread is in the Wait state MSSV: 090086 – Trần Thị Hương- CT902 22 Tìm hiểu ngơn ngữ lập trình C Sharp viết ứng dụng Chat mạng LAN CHƢƠNG PHÂN TÍCH VÀ THIẾT KẾ CHƢƠNG TRÌNH 3.1 Cấu trúc chung chương trình Chương trình Chat chia làm project sau: SCG.Prism : Chứa thành phần lớp gói gọn chương trình kết nối, giao diện … Project bao gồm thành phần lớp quan trọng sau: Thành phần PrismConnection – Cho phép ứng dụng client kết nối giao tiếp với máy chủ Quy định rõ đặc tính địa máy chủ số cổng máy chủ, phương thức để bắt đầu truyền thông, kiện để đáp ứng hoạt động khác : vào chat, đến người dùng vào phòng chat, thông điệp từ quản trị viên Thành phần PrismServer- Gói gọn hoạt động PrismServer, cho phép nhiều client kết nối giao tiếp thông qua socket Đây thành phần ứng dụng máy chủ PrismServer nào, cung cấp thuộc tính giao diện máy chủ người dùng cập nhật Lớp PrismUser – Đại diện cho cá nhân riêng người đăng nhập vào PrismServer Lớp sử dụng để đại diện cho người dùng client ứng dụng server Lớp PrismRoom – Đại diện cho ―phòng chat‖ để chứa nhiều PrismUser người dùng giao tiếp với PrismServerAdmin : Đóng vai trò máy Server, có nhiệm vụ lắng kết nối từ Client thông qua cổng Cung cấp giao diện người dùng để máy chủ khai thác nhìn thấy kết nối hoạt động hình, lịch sử thực thi ChatNDraw: Có nhiệm vụ kết nối đến Server thông qua địa IP Server, tạo vào phòng chat, chat với người dùng khác phòng chat MSSV: 090086 – Trần Thị Hương- CT902 23 Tìm hiểu ngơn ngữ lập trình C Sharp viết ứng dụng Chat mạng LAN 3.2 Phân tích thiết kế 3.2.1 Viết ứng dụng Client (ChatNDraw) Một ứng dụng Client kết nối giao tiếp qua PrismServer, sử dụng thành phần PrismConnection Trong ứng dụng WinForms, bạn cần thả thành phần vào ứng dụng biểu mẫu thiết lập đặc tính việc thiết kế thời gian PrismConnection cơng bố ba đặc tính phải đặt trước kết nối: Host –Ghi rõ tên miền địa IP máy chủ nơi mà PrismServer chạy Port –Ghi rõ số cổng mà PrismServer cấu hình để sử dụng máy chủ SubjectName –Khái niệm ―SubjectName‖ cung cấp khả cho nhiều ứng dụng client để sử dụng cho PrismServer đơn, nhận thông điệp bắt nguồn từ client PrismServer hướng thông điệp để kết nối với Client mà dung chung chủ đề Bạn nên cung cấp chuỗi giá trị tương ứng với tên ứng dụng bạn a Kết nối Các đặc tính thiết lập trên, thiết lập đặc tính hoạt động cho để cố gắng thiết lập kết nối Hành động chặn ứng dụng kết nối tạo ra, ngoại lệ bỏ lại b.Đăng nhập Khi mà kết nối thiết lập,bước ―đăng nhập ‖ vào PrismServer cách sử dụng tài khoản/mật Thành phần PrismConnection cung cấp hai phương pháp sử dụng để đăng nhập vào máy chủ: Login LoginNew Cho phép người sử dụng để đăng nhập vào máy chủ sử dụng tên người dùng mật có sẵn, đăng ký Giao diện người dùng cần client cung cấp đường dẫn người sử dụng bắt đầu loại hình đăng nhập Gọi Login để đăng nhập vào máy chủ sử dụng tài khoản mật đăng ký trước PrismConnection đáp lại thông qua kiện LoginOK, kiện MSSV: 090086 – Trần Thị Hương- CT902 24 Tìm hiểu ngơn ngữ lập trình C Sharp viết ứng dụng Chat mạng LAN Loginerror Có thể có lỗi mật khơng hợp lệ, khơng tìm thấy tài khoản người dùng đăng ký máy chủ Gọi LoginNew để đăng nhập vào máy chủ với tài khoản Phương pháp thực thi tham số đối tượng PrismUser ví dụ, chứa đựng thông tin người dùng cho người sử dụng Các thành phần thư viện có chứa thành phần hộp thoại PrismUserInfoDialog sử dụng để tạo PrismUser cách nhanh chóng PrismConnection đáp lại, thông qua kiện LoginOK, kiện Loginerror Có thể tồn lỗi bao gồm tài khoản tồn danh nghĩa tài khoản không hợp lệ Ứng dụng máy client, bạn ln tìm ví dụ PrismUser cục để kết nối cách tham khảo đặc tính ThisUser //Đoạn mã ví dụ Client kết nối PrismServer connection.Host = _frmLogin.txtHost.Text; connection.Port = (int)_frmLogin.numPort.Value; try { connection.Active = true; connection.Login(_frmLogin.txtUserName.Text, _frmLogin.txtPassword.Text); } catch (Exception error) { MessageBox.Show(error.Message, " Lỗi kết nối PrismServer "); } c PrismRooms Mỗi máy client kết nối tới PrismServer chiếm lĩnh PrismRoom riêng chat tương tác với máy client khác phòng Ứng dụng máy client bạn nhìn thấy ứng dụng PrismRoom tạo mà chia sẻ chủ đề Thành phần PrismConnection thông báo cho máy client biết PrismRooms tạo gần thông qua kiện RoomAdded Bạn nhận loạt kiện sau đăng nhập thành công vào PrismRoom tồn máy MSSV: 090086 – Trần Thị Hương- CT902 25 Tìm hiểu ngơn ngữ lập trình C Sharp viết ứng dụng Chat mạng LAN chủ Máy client đại diện cho phòng giao diện người dùng, cách sử dụng ListBox, ListView, điều khiển tương tự Khi PrismRoom lấy ra, PrismConnection thông báo cho máy client thông qua kiện RoomRemoved PrismConnection thông báo cho máy client người sử dụng vào rời PrismRoom Thông qua kiện UserAddedToRoom, UserLeftRoom hoàn thành xong Sau đăng nhập thành cơng vào máy client đặt vào phòng mặc định phòng ngồi PrismConnection thơng báo cho máy client nhập vào phòng qua kiện JoinedRoom Lưu ý JoinedRoom kích hoạt, thêm vào kiện accompanyingUserAddedToRoom; UserAddedToRoom có chứa đối tượng PrismUser đại diện cho máy client có nghĩa thực kết nối ứng dụng cục Để tham gia PrismRoom khác nhau, gọi phương thức EnterRoom Để tạo tạo PrismRoom mới, gọi phương thức CreateRoom Sau gọi phương thức, bạn nhận vài kiện, UserLeftRoom (Bạn rời khỏi phòng), UserAddedToRoom (cho bạn nhập phòng ), cuối JoinedRoom Ngoài ra, bạn người dùng cuối rời phòng, PrismServer hủy phòng (trừ mặc định phòng ngồi) PrismConnection kích hoạt kiện RoomRemoved Nếu bạn tạo phòng mới, bạn nhận kiện RoomAdded trước UserAddedToRoom JoinedRoom d PrismRooms dành cho trò chơi nhiều ngƣời chơi Phương thức CreateRoom có tham số, lệnh tên phòng số lượng tối đa mà người tham gia phòng chứa (0 để định cho biết khơng có tối đa số) Nếu bạn vượt qua số lớn số khơng, PrismConnectionwill kích hoạt kiện StartSignal số lượng người tham gia nhập phòng, máy chủ khóa phòng khơng cho máy client khác vào phòng Tính thiết kế phép nhiều người chơi trò chơi để bắt đầu sau xác định số lượng người chơi nhập trò chơi phòng MSSV: 090086 – Trần Thị Hương- CT902 26 Tìm hiểu ngơn ngữ lập trình C Sharp viết ứng dụng Chat mạng LAN e Những thông điệp Chat Dữ liệu Khi bạn PrismRoom ,bạn trao đổi chat thông điệp liệu với máy client khác phòng Để gửi chuỗi chat văn bản, gọi phương thức SendChat Khi chuỗi chat văn nhận từ máy client khác phòng (lưu ý điều loại trừ máy cục bộ), PrismConnection kích hoạt kiện ChatMessageReceived "Data Messages" chuỗi gủi tới máy client phòng, quản lý nhớ tương tự cách để chatstrings Ý tưởng đằng sau thông điệp liệu để cung cấp điều kiện thuận lợi cho ứng dụng máy client thông qua ứng dụng cụ thể, chat, liệu cho máy client phòng Gọi SendData để gửi thơng điệp liệu, đáp ứng với thông điệp liệu xử lý kiện DataMessageRecieved Tóm lại: ChatNDraw bao gồm mã nguồn đầy đủ cho ứng dụng đơn giản máy client Điều cho phép người dùng máy client kết nối với PrismServer, tạo tham gia phòng chat, chat với người dùng khác, chia sẻ vẽ bảng đen Cho phép người dùng sửa đổi thông tin cá nhân, xem trạng thái Server 3.2.2 Viết ứng dụng Server (PrismServerAdmin) Các thành phần PrismServer sở PrismServer ứng dụng máy chủ Gói gọn đa chuỗi server socket, quản lý Subject Names, PrismRooms, PrismUsers định tuyến xử lý thông điệp kết nối với máy client Thành phần PrismServer cung cấp số đặc tính để điều khiển mặt hoạt động máy chủ: Port – Chỉ rõ số cổng mà máy chủ lắng nghe cho kết nối LobbyName – Tên mặc đinh PrismRoom mà máy client thêm vào ProhibitSameIP – Nếu đúng, cấm nhiều kết nối từ địa IP giống ProhibitSameUserName – Nếu đúng, cấm nhiều người dùng đăng nhập tên MSSV: 090086 – Trần Thị Hương- CT902 27 Tìm hiểu ngơn ngữ lập trình C Sharp viết ứng dụng Chat mạng LAN PingInterval – Kiểm soát Client ping vào Server, client ping không đáp ứng ngồi khơng kết nối Implementation – Cần thiết để thiết lập số trường hợp thành phần mà xuất phát từ PrismServerImplementation Thành phần PrismServer cung cấp vài phương thức cho phép điều hành viên tương tác server kết nối với client, chuỗi kiện Những ứng dụng nên đáp lại kiện cập nhật từ giao diện người dùng để phản hồi lại thông tin thay đổi (Những client kết nối, thêm xóa phòng…) Quan sát ứng dụng PrismServerAdmin bao gồm ứng dụng server mẫu để thực thi hành động Quản lý User Server Thành phần PrismServer trình bày đặc tính Implementation mà phải gán cho thành phần mà xuất phát từ PrismServerImplementation PrismServerImplementation cung cấp giao diện cho việc quản lý người dùng Bạn bắt nguồn từ thành phần PrismServerImplementation phép server sử dụng tệp cục bộ, sở liệu, vài kỹ thuật lưu trữ khác để quản lý thông tin người dùng Kỹ thuật lưu trữ định nghĩa bắt nguồn từ lớp để sau tham khảo ―Đăng ký thơng tin người dùng‖ điều không phù hợp với đăng ký Window Bao gồm gói cụ thể mà bạn sử dụng : PrismServerFileImplementation Đây thành phần lưu trữ thông tin người dùng file nhị phân cục file hệ thống Thành phần PrismServerImplementation chứa phương thức mà quan trọng đưa việc bổ sung quản lý người dùng bool UserExists(string userName) - Trả lại tên tài khoản tồn người dùng đăng ký bool IsPasswordValid(string userName, string password) – Hiệu chỉnh lại mật cho người dùng bool CheckUserName(string userName, ref string msg) – Kiểm tra tên tài khoản bool CheckPassword(string password, ref string msg) – Kiểm tra mật MSSV: 090086 – Trần Thị Hương- CT902 28 Tìm hiểu ngơn ngữ lập trình C Sharp viết ứng dụng Chat mạng LAN void StoreUserInfo(PrismUser user) – Lưu trữ thông tin người dùng đăng ký bool CheckRoom(string roomName, int maxUsers, ref string msg) – Kiểm tra phòng void SaveSettings() – Ghi lại thiết lập Server void LoadSettings() – Nạp vào thiết lập Server void Initialize() – Thực khởi tạo trước void ProcessCustomCommand(string commandName, string commandParams) – Cung cấp kỹ thuật để xử lý lệnh tùy chỉnh Server Một ứng dụng Client gọi phương thức CustomCommand PrismConnection để gửi lệnh tùy chỉnh tới Server Một lệnh tùy chỉnh gồm có tên lệnh (string) tham số (string) Thành phần PrismServer chuyển cho client lệnh tùy chỉnh cách sử dunhj phương thức CustomCommand.Cả hai thành phần CustomCommand PrismConnection cung cấp kiện CustomCommandRecieved để xác nhận lệnh tùy chỉnh Đây cấu trúc tính mềm dẻo tình tùy biến Client Server MSSV: 090086 – Trần Thị Hương- CT902 29 Tìm hiểu ngơn ngữ lập trình C Sharp viết ứng dụng Chat mạng LAN CHƢƠNG CHƢƠNG TRÌNH THỰC NGHIỆM 4.1 Giao diện chƣơng trình Server Giao diện chương trình Server chưa có Client kết nối đến Server Muốn Server lắng nghe ta kích hoạt bắt đầu, kết thúc sử dụng nút Kết thúc Đây giao diện server bắt đầu lắng nghe MSSV: 090086 – Trần Thị Hương- CT902 30 Tìm hiểu ngơn ngữ lập trình C Sharp viết ứng dụng Chat mạng LAN 4.2 Giao diện chương trình Client Giao diện Client chưa kết nối Khi Client muốn kết nối người dùng phải nhấn vào nút ―Kết nối‖ Sau điền thơng tin vào bảng sau : Nếu chưa đăng ký Tài khoản nhấn ― Tạo tài khoản ‖ để thực đăng ký : MSSV: 090086 – Trần Thị Hương- CT902 31 Tìm hiểu ngơn ngữ lập trình C Sharp viết ứng dụng Chat mạng LAN Giao diện người dùng sau kết nối thành công: MSSV: 090086 – Trần Thị Hương- CT902 32 Tìm hiểu ngơn ngữ lập trình C Sharp viết ứng dụng Chat mạng LAN CHƢƠNG TỔNG KẾT VÀ HƢỚNG PHÁT TRIỂN ĐỒ ÁN 5.1 Những kết đạt Luận văn đạt kết sau: - Xây dựng thành công ứng dụng Chát mơ hình Client – Server cho phép nhiều người chat với mạng Lan - Chương trình chạy tương đối ổn định - Thực chức quản lý User - Tìm hiểu ngơn ngữ lập trình C# 5.2 Những vấn đề tồn - Chưa thực Chat tiếng việt - Các tiện ích hệ thống chưa nhiều Voice CAM 5.3 Hướng phát triển đồ án Để hệ thống thực giúp nhiều tiện ích cho người dùng, cần phải cải tiến , bổ sung khắc phục yếu kém, vấn đề tồn hệ thống Thêm tích hợp số chức tiện ích khác 5.4 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ừ Professional C#, 2nd Edition, Xuất Wrox Press Ltd [3] Andy Harris, Microsoft C# Programming for the Absolute Beginner, Premier Press © 2002, ISBN: 1931841160 [4] Kỹ thuật lập trình ứng dụng C#.net tồn tập ,biên soạn Phạm Hữu Khang ,NXB Lao động – Xã hội , xuất năm 2005 [5] Mạng máy tính , tác giả Lê Đình Danh MSSV: 090086 – Trần Thị Hương- CT902 33 Tìm hiểu ngơn ngữ lập trình C Sharp viết ứng dụng Chat mạng LAN MSSV: 090086 – Trần Thị Hương- CT902 34 ... Hương- CT902 22 Tìm hiểu ngơn ngữ lập trình C Sharp viết ứng dụng Chat mạng LAN CHƢƠNG PHÂN TÍCH VÀ THIẾT KẾ CHƢƠNG TRÌNH 3.1 C u tr c chung chương trình Chương trình Chat chia làm project sau: SCG.Prism... Hương- CT902 Tìm hiểu ngơn ngữ lập trình C Sharp viết ứng dụng Chat mạng LAN CHƢƠNG 2: TÌM HIỂU VỀ C# 2.1 Tổng quan C# C# ngôn ngữ lập trình hướng đối tượng, c u tr c lập luận C# c đầy đủ đ c tính... Hương- CT902 18 Tìm hiểu ngơn ngữ lập trình C Sharp viết ứng dụng Chat mạng LAN Tcplistener Lớp TcpClient đơn giản client socket dành cho chương trình Client, lớp tcpListener đơn giản dành cho chương