« Home « Kết quả tìm kiếm

Báo cáo thực tập tốt nghiệp Hoàng Văn Vang _ Nguyễn Mạnh Dũng _ Xây dựng phần mềm lớp học ảo trong mạng Lan _Lop KHMT1K3


Tóm tắt Xem thử

- TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘIKHOA CÔNG NGHỆ THÔNG TIN.
- BÁO CÁO THỰC TẬP TỐT NGHIỆP Đề tài: XÂY DỰNG PHẦN MỀM LỚP HỌC ẢO TRONGMẠNG LAN Nhóm sinh viên thực hiện: HOÀNG VĂN VANG NGUYỄN MẠNH DŨNG Lớp : ĐH- KHMT1K3 Giảng viên hướng dẫn: TH.S NGUYỄN TIẾN LỢI Hà Nội, 05/2012 PHIẾU GIAO ĐỀ TÀI Page | 2 NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN.
- Tại các phòng máyđó các giảng viên có thể dễ dàng truyền đạt kiến thức một cách sinh động, trực quan chocác học viên bằng cách sử dụng chức năng chia sẻ màn hình của phần mềm quản lý phòng máy, hoặc giảng viên có thể chỉ dẫn cho học viên trực tiếp trên màn hình của họcviên chỉ bằng thao tác đơn giản giống như trực tiếp giảng viên ngồi tại máy của học viên…Do đó việc xây dựng một phần mềm lớp học ảo trong mạng Lan là một việc rấtcần thiết, nhằm hỗ trợ các giảng viên cũng như hỗ trợ các học viên có thể tiếp cận đượcvới cách học tập trực quan dễ hiểu.
- Nhóm chúng emđã đăng ký đề tài “Xây dựng phần mềm lớp học ảo trong mạng Lan”.
- Và tiến xa hơn đó là một phần mềm đào tạo thông qua mạng Internet, ở đócả học viên và giảng viên có thể truy cập từ bất kỳ máy tính nào được cài đặt phần mềmviệc học tập và giảng dạy sẽ càng trở lên dễ dàng hơn.Để hoàn thành báo cáo thực tập tốt nghiệp này, chúng em đã được sự giúp đỡ tậntình của giảng viên hướng dẫn - Th.S Nguyễn Tiến Lợi - Giảng viên khoa CNTTtrường Đại Học Công Nghiệp Hà Nội, Thầy đã tận tình hướng dẫn, góp ý chỉnh sửa rấtchi tiết cho bài báo cáo của chúng em.
- Đề xuất xây dựng một phần mềm lớp học ảo trong mạng Lan có những chứcnăng chính sau đây.
- Hỗ trợ giảng viên một số chức năng và tiện ích khác.Đưa ra các kiến thức, kỹ thuật cơ bản và quan trọng về lập trình mạng với Socketvà .Net Remoting.
- Nghiên cứu các lĩnh vực lập trình nâng cao như các hàm API, lập trình xử lý ảnhcó ứng dụng cụ thể trong bài toán.Báo cáo về quá trình để xây dựng các module chính của phần mềm, và sau đótiến hành xây dựng một phần mềm hoàn thiện.Đưa ra một phần mềm hoàn thiện và đánh giá về các kết quả thực nghiệm.
- Ứng dụng phần mềm quản lý lớp học ảo.
- Page | 5 DANH SÁCH HÌNH ẢNHDANH MỤC BẢNG BIỂU Page | 6 DANH MỤC CÁC THUẬT NGỮ VIẾT TẮT Danh sách từ viết tắtNghĩa của từ LanVCLan Virual Class (Phần mềm lớp học ảo).IPInternet Protocol.TCPTransmission Control Protocol.UDPUser Datagram Protocol.TCP/IPInternet Protocol Suite.FPTFile Transfer Protocol.SMTPSimple Mail Transfer Protocol.HTTPHyperText Transfer Protocol.DNSDoname System.RGBKhông gian màu gồm ba màu Red - Blue - Green.APIApplication programming interface.DLLDynamic Link Library.XMLExtensible Markup Language.HTMLHyperText Markup Language.Page | 7 MỤC LỤC PHIẾU GIAO ĐỀ TÀI NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN LỜI NÓI ĐẦU TÓM TẮT NỘI DUNG BÁO CÁO THỰC TẬP TỐT NGHIỆP DANH SÁCH HÌNH ẢNH DANH MỤC CÁC THUẬT NGỮ VIẾT TẮT MỤC LỤC CHƯƠNG 1.
- Mô tả quá trình truyền nhận dữ liệu bằng UDP.
- Client và Server có thể trao đổi thông tin với nhau nhiều lần qua hai hàmđó là Sendto() và hàm Recvfrom.
- Giữa Client và Server không hề có một kênh ảo nào vì vậy việc truyềnnhận dữ liệu thường dễ bị mất mát.2.1.7.
- Sử dụng C# Stream với TCP.Điều khiển thông điệp dùng giao thức TCP thường gây ra khó khăn cho các lậptrình viên, do vậy .Net Framwork cung cấp một số lớp đề giảm gánh nặng lập trình.
- Mộttrong những lớp đó là NetworkStream, và hai lớp dùng để gởi và nhận dữ liệu sử dụnghai lớp đó là StreamWriter và StreamReader.2.1.7.1.
- Lớp NetworkStream.Lớp này được nằm trong thư viện System.Net.Socket.
- Lớp NetworkStream cóthể được tạo lập bằng nhiều phương thức khác nhau, nhưng một phương thức tạo lập màta hay sử dụng đó là gán vào Socket của Server và Client đã được tạo lập sẵn.
- Một số phương thức của lớp NetworkStream.
- Thuộc tínhMô tả CanRead()true nếu NetworkStream hỗ trợ đọcCanSeek()Luôn luôn falseCanWrite()true nếu NetworkStream hỗ trợ ghiDataAvailable()true nếu có dữ liệu để đọc Phương thứcMô tả BeginRead()Bắt đầu đọc NetworkStream bất đồng bộBeingWrite()Bắt đầu ghi NetworkStream bất đồng bộEndRead()Kết thúc đọc NetworkStream bất đồng bộ Page | 19 EndWrite()Kết ghi đọc NetworkStream bất đồng bộFlush()Đẩy toàn bộ dữ liệu điRead()Đọc dữ liệu từ NetworkStreamWrite()Ghi dữ liệu từ NetworkStreamEquals()So sánh hai đối tượng NetworkStreamGetHashCode()Lấy hash code cho NetworkStream.Close()Đóng đối tượng NetworkStream Bảng 2.
- Một số phương thức của lớp NetworkStreamChú ý : Phương thức Flush() được dùng sau mỗi phương thức Write() để đảm bảo dữ liệu được đặt vào NetworkStream sẽ lập tức gửi đến hệ thống ở xa.
- NetworkStream khi truyền dữ liệu cũng có gặp một số vấn đề về biên dữ liệu.Vấn đề này đã được giải quyết với hai lớp StreamReader và lớp StreamWriter.2.1.7.2.
- Cả hai lớp đều triển khai với đối tượng NetworkStream để xác địnhcác hệ thống đánh dấu cho thông điệp TCP.Các phương thức tạo lập lớp StreamRead và StreamWriter, trong đó một phươngthức tạo lập mà ta hay được sử dụng nhất đó là gắn hai lớp trên vào lớp NetworkStreamđã được tạo lập từ trước.
- Một số phương thức của lớp StreamRead.
- Phương thứcMô tả Read()Đọc một hoặc nhiều byte dữ liệu từStreamReader.Peek()Trả về byte dữ liệu hợp lệ tiếp theo màKhông gỡ bỏ nó khỏi Stream.ReadLine()Đọc dữ liệu bắt đầu từ đối tượngStreamRead trở lên cho tới khi bắt gặp ký tựxuống dòng đầu tiên.ReadToEnd()Đọc dữ liệu cho đến hết Stream.
- Page | 20 ToString()Tạo ra một chuỗi mô tả đối tượng Stream.Equals()So sánh hai đối tượng StreamRead.Close()Đóng đối tượng StreamRead Bảng 2.
- Một số phương thức lớp StreamReadMột số phương thức của lớp StreamWriter.Lớp StreamWriter cũng có nhiều phương thức kết hợp với nó, một số phươngthức của lớp StreamRead cũng có trong đối tượng StreamWriter, ngoài ra nó còn có mộtsố phương thức giêng dưới đây.
- Phương thứcMô tả Flush() Gửi tất cả dữ liệu trong bộ đệmStreamWriter ra Stream.Writer()Gửi một hoặc nhiều byte ra Stream.WriterLine()Gửi dữ liệu cùng với ký tự xuống dòng raStream Bảng 2.
- Một số phương thức lớp StreamWriter 2.1.8.
- Sử dụng các lớp Helper Socket.Cũng nhằm giảm gánh nặng cho các lập trình viên .Net Framwork đã đưa ra lớpHelper để hỗ trợ cả lập trình hướng kết nối với Socket (TCP) và lập trình không hướngkết nối với Socket (UDP).2.1.8.1.TCPClient.TCPClient được thiết kế nhằm hỗ trợ cho việc viết các ứng dụng TCP Clientđược dễ dàng.Bảng các thành viên của lớp TCPClient.
- Phương thức khởi tạoMô tả TcpClient() Tạo một đối tượng TcpClient.
- Chưa đặt thông số gì.TcpClient(IPEndPoint) Tạo một TcpClient và gắn cho nó một EndPoint cục bộ.(Gán địa chỉ máy cục bộ và số hiệu cổng để sử dụng traođổi thông tin về sau)TcpClient(String,Int32) Tạo một đối tượng TcpClient và kết nối đến một máy cóđịa chỉ và số hiệu cổng được truyền vào.
- Page | 21 ConnectedTrạng thái cho biết đã kết nối được đến Server hay chưa? Các hàm thành phầnMô tả Close()Giải phóng đối tượng TcpClient nhưng không đóng kếtnối.Connect(RemoteHost,RemotePort)Kết nối đến một máy TCP khác có Tên và số hiệu cổng.GetStream() Trả về NetworkStream để từ đó giúp ta gửi hay nhận dữliệu.
- (Thường làm tham số khi tạo StreamReader vàStreamWriter để gửi và nhận dữ liệu dưới dạng xâu kýtự) .Khi đã gắn vào StreamReader và StreamWriter rồi thì ta cóthể gửi và nhận dữ liệu thông qua các phương thứcReadline, writeline tương ứng của các lớp này.
- Các thành viên của lớp TCPClient.Từ các thành viên của lớp TcpClient ở trên ta thấy rằng, việc kết nối và thực hiệngửi nhận rất đơn giản.
- Bước 1: Tạo một đối tượng TcpClient.
- Bước 2: Kết nối đến máy chủ (Server) dùng phương thức Connect.
- Bước 3: Tạo 2 đối tượng StreamReader (Receive)và StreamWriter (Send)và "nối" với GetStream của TCPClient.
- Dùng đối tượng StreamWriter.Writeline/Write vừa tạo ở trên để gửidữ liệu đi.
- Dùng đối tượng StreamReader.Readline/Read vừa tạo ở trên để đọc dữliệu về.
- Bước 5: Đóng kết nối.
- Nếu muốn gửi/nhận dữ liệu ở mức byte (nhị phân) thì dùng NetworkStream.(truyền GetStream cho NetworkStream).2.1.8.2.
- TCPListener.TCPListerner là một lớp cho phép người lập trình có thể xây dựng các ứng dụngServer (Ví dụ như SMTP Server, FTP Server, DNS Server, POP3 Server hay server tựđịnh nghĩa.
- Ứng dụng server khác với ứng dụng Client ở chỗ nó luôn luôn thựchiện lắng nghe và chấp nhận các kết nối đến từ Client.Bảng các thành viên của lớp TCPListener.
- Phương thức khởi tạoMô tả Page | 22 TcpListener ( Int32) Tạo một TcpListener và lắng nghe tại cổng chỉđịnh.TcpListener (IPEndPoint) Tạo một TcpListener với giá trị Endpoint truyềnvào.TcpListener(IPAddress,Int32) Tạo một TcpListener và lắng nghe các kết nối đếntại địa chỉ IP và cổng chỉ định.
- Phương thứcMô tả AcceptSocket( )Chấp nhận một yêu cầu kết nối đang chờ.AcceptTcpClient()Chấp nhận một yêu cầu kết nối đang chờ.
- (Ứngdụng sẽ dừng tại lệnh này cho đến khi nào có mộtkết nối đến – “Blocking”).Pending()Cho biết liệu có kết nối nào đang chờ đợi khôngStart()Bắt đầu lắng nghe các yêu cầu kết nối.Stop()Dừng việc nghe.
- Các phương thành viên của lớp TCPListener.2.1.8.3.
- Ngoài ra, với giao thức UDP ta còncó thể gửi các gói tin quảng bá (Broadcast) cho đồng thời nhiều máy.Trong .NET, lớp UDPClient (nằm trong namesapce System.Net.Sockets) đónggói các chức năng của giao thức UDP.Bảng các thành viên của lớp UDPClient Phương thức khởi tạo Mô tả UdpClient.
- Tạo một đối tượng (thể hiện) mới của lớp UDPClient.UdpClient (AddressFamily) Tạo một đối tượng (thể hiện) mới của lớp UDPClient.Thuộc một dòng địa chỉ(AddressFamily) được chỉ định.UdpClient (Int32) Tạo một UdpClient và gắn (bind) một cổng cho nó.UdpClient (IPEndPoint) Tạo một UdpClient và gắn (bind) một IPEndpoint(gán địa chỉ IP và cổng) cho nó.
- Kết quả chương trình không sử dụng đồng bộ hóa.Do đó ta cần phải đồng bộ hóa việc truy cập đối tượng counter.C# cung cấp đối tượng Lock để thưc hiện công việc đồng bộ hóa này.
- Một lock sẽ đánh dấu một critical section trên đoạn mã đồng thời cung cấp việc đồng bộ hóa đốivới đối tượng được chỉ định khi lock có hiệu lực.
- Cú pháp sử dụng một Lock yêu cầukhóa chặt một đối tượng rồi thi hành một câu lệnh hoặc một khối lệnh rồi sẽ mở khóa ở cuối câu hoặc khối lệnh đó.
- Ta sẽ tra qua theo một đối tượng qui chiếu và theo sau từ chốt là một khối lệnh.
- Kết quả chương trình sử dụng đồng bộ hóa.Việc đồng bộ các luồng là quan trọng trong các ứng dụng đa luồng.
- Tuy nhiên cómột số lỗi tinh vi và khó kiểm soát có thể xuất hiện cụ thể là deadlock và race condition.2.4.4.2.
- Deadlock.Deadlock là một lỗi mà có thể xuất hiện khi hai luồng cần truy nhập vào các tàinguyên bị khoá lẫn nhau.
- Giả sử một luồng đang chạy theo đoạn mã sau, trong đó A, Blà hai đối tượng tham chiếu mà cả hai luồng cần truy nhập: lock (A.
- do something}} Có thể xảy ra biến cố sau: luồng đầu tiên yêu cầu một lock trên A, trong khi vàocùng thời điểm đó luồng thứ hai yêu cầu lock trên B.
- Loại lỗi này làm toàn ứng dụng bịtreo, ta phải dùng Task Manager để hủy nó.Deadlock có thể được tránh nếu cả hai luồng yêu cầu lock trên đối tượng theocùng thứ tự .
- Nó hiếm khi nào dừng việcthực thi của tiến trình , nhưng nó có thể dẫn đến việc dữ liệu bị lỗi.
- Nói chung nó xuấthiện khi vài luồng cố gắng truy nhập vào cùng một dữ liệu và không quan tâm đến cácluồng khác làm gì để hiểu ta xem ví dụ sau :Giả sử ta có một mảng các đối tượng, mỗi phần tử cần được xử lí bằng một cáchnào đó, và ta có một số luồng giữa chúng làm tiến trình này.
- Ta có thể có một đối tuợnggọi là ArrayController chứa mảng đối tượng và một số int chỉ định số phẩn tử được xửlí .tacó phương thức: intGetObject(intindex).
- ch đnh bao nhiêu đi tng đc x lí ỉ ị ố ượ ượ ử } Bây giờ mỗi luồng mà dùng để xử lí các đối tượng có thể thi hành đoạn mã sau: lock ( ArrayController).
- Nếu ta muốn tài nguyên không bị giữ quá lâu , ta có thể không giữ lock trênArrayController trong khi ta đang trình bày thông điệp người dùng .
- Ta có thể gặp một vấn đề.
- Nếu một luồng lấy lấy đối tưọng (đối tượng thứ 11trong mảng) và đi tới trình bày thông điệp nói về việc xử lí đối tượng này.
- Trong khi đóluồng thứ hai cũng bắt đầu thi hành cũng đoạn mã gọi ObjectProcessed, và quyết địnhđối tượng xử lí kế tiếp là đối tượng thứ 11, bởi vì luồng đầu tiên vẫn chưa được cậpnhật.ArrayController.ObjectsProcessed trong khi luồng thứ hai đang viết đến mànhình rằng bây giờ nó sẽ xử lí đối tượng thứ 11, luồng đầu tiên yêu cầu một lock kháctrên ArrayController và bên trong lock này tăng ObjectsProcessed.
- Cả hai luồng đều đang xử lí cùng một đối tượng và loại tình huống này ta gọi làRace Condition.
- Lập trình xử lý ảnh trong C# 2.5.1.
- Một số khái niệm xử lý ảnh.2.5.1.1.
- Page | 41 Một số ảnh thường được biểu diễn như một ma trận các điểm ảnh.
- Trong đó mỗiđiểm ảnh có thể được biểu diễn bằng.
- Một số kỹ thuật khác.
- Các hàm API.2.5.1.1.
- Các hàm (Function) là thành phần chính của Windows API, chúng đượcchứa trong các file DLL và có thể được truy xuất một cách dễ dàng bởicác chương trình trên nền Windows.
- Các cấu trúc (Structure) nhiều hàm API đòi hỏi một cấu trúc phải đượctruyền cho chúng để có thể vận chuyển một lượng lớn thông tin mà màkhông cần phải dùng quá nhiều đối số.
- Các hàm Callback cungcấp một cách thức để chương trình của bạn có thể can thiệp trực tiếp vàomột tác vụ nào đó.
- Sau quá trình nghiên cứu và triển khai đề tài “Xây dựng phần mềm lớp học ảotrong mạng Lan” đã thu được những kết quả sau đây.
- Tìm hiểu được các cách thức lập trình Socket và lập trình .Net Remotingtrong C.
- Nghiên cứu các kiến thức lập trình Windows nâng cao như lập trình vớicác hàm API, lập trình trên nền tảng Registry.
- Ngoài ra còn có kiến thức nâng cao về sử lý ảnh, lập trình đa luồng, lậptrình sự kiện Delegate.
- Xây dựng được hoàn chỉnh các module chia sẻ màn hình, remote desktop,và một số chức năng khác.
- Về cơ bản phần mềm đã đạt được những vấn đề đặt ra.
- Tuy nhiên trong giai đoạnthực tập xây dựng lên phần mềm này còn nhiều vấn đề cần phải phát triển thêm.
- Xây dựng một phần mềm LanVc hoàn chỉnh và hoàn toàn miễn phí có thểthay thế được phần mềm Farstone Virtual Class có giá rất đắt và thiếu đichức năng quay phim màn hình và VoIP.
- Xây dựng một modul tách biệt Remote desktop thành một sản phẩmremote control over Internet có thêm các chức năng như VoIP và chatthoại có sức cạnh tranh tốt có thể thay thế phần mềm thông dụng hiện nayTeamviewer.
- Hướng phát triển tích hợp thêm vào phần mềm thi trắc nghiệm trongmạng Lan có các chức năng thi, chấm bài thi.
- Hoặc có thể phát triển lênư phần mềm thành một phần mềm dạy học trựctuyến với đầy đủ các chức năng như của phần mềm “Lớp học ảo trongmạng Lan”.
- Ingo Rammer, Advanced .Net Remoting (C# Edition), Impressions Book andJournal Services, Inc (2002).
- Andrew Krowczyk, Vinod Kumar, Nauman Laghari, Tim Parker, SrinivasaSivakumar, Professional_.NET_Network_Programming, Wrox Press Ltd.
- Brent Rector, Introduction to .NET Remoting, Wise Owl Consulting, Inc (2004).
- Fiach Reid, Network programming in .NET with C# and VB.NET (DigitalPress), Elsevier’s Science & Technology Rights Department in Oxford (2004).
- Joseph Albahari and Ben Albahari, C# 4.0 IN A NUTSHELL, O’Reilly Media,Inc.[10].Đào Lưu Duy, Bài giảng lập trình mạng với C#, Sách điện tử.
- Ngô Bá Hùng, Nguyễn Công Huy, Giáo trình lập trình mạng với Java, KhoaCông Nghệ Thông Tin trường Đại học Cần Thơ.[12].Nguyễn Cao Đạt, Bài giảng lập trình mạng, Trường Đại học Bách Khoa TP.
- HồChí Minh.[13].Nhóm tác giả, Giáo trình lập trình mạng với Java, Tổng hợp diễn đàn Đại học.[14].Nhóm tác giả, Giáo trình lập trình mạng với C#, Trường Đại học Đà Lạt.[15].Văn Thiên Hoàng, Giáo trình lập trình mạng, Trường Đại học Công Nghệ Đạihọc Quốc Gia TP.Hồ Chí Minh.[16].Nguyễn Quang Hoan, Giáo trình xử lý ảnh, Học viện công nghệ Bưu ChínhViễn Thông.[17].Nguyễn Hùng Cường, Bài thực hành xử lý ảnh với C#, Trường Đại học Công Nghiệp Hà Nội.[18].Nhóm tác giả, Căn bản XML, Trung tâm công nghệ phần mềm Thừa ThiênHuế.[19].Nguyễn Hà Giang, Lập trình Windows C#, Trường Đại học Khoa học tự nhiênĐại học Quốc Gia Hà Nội.[20].Nguyễn Ngọc Bình Phương, Thái Thanh Phong, Các giải pháp lập trình C#, Nhà xuất bản giao thông vận tải.[21].Nguyễn Tấn Thuận, Lập trình ứng dụng Windows From trong C#, Học việncông nghệ thông tin NIT.
- Bùi Duy Hùng,Phần mềm Free Virtual Class, Giải thưởng phần mềm sáng tạotrường Đại học Công Nghiệp Hà Nội.
- Nguyễn Huy Khánh,Mã nguồn phần mềm chat trong mạng Lan, Đồ án mônhọc lập trình mạng.
- http://www.pinvoke.net/default.aspx/user32.enablewindowthư viện các hàmAPI.
- http://hedieuhanh.forumvi.net/t3686-topicthư viện các hàm API.
- http://csharp.net-informations.com/Kiến thức lập trình mạng với C#

Xem thử không khả dụng, vui lòng xem tại trang nguồn
hoặc xem Tóm tắt