Xây dựng chương trình remote desktop

47 399 0
Xây dựng chương trình remote desktop

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Ket-noi.com diễn đàn công nghệ, giáo dục LỜI MỞ ĐẦU Sự phát triển vũ bão ngành công nghệ thông tin kéo theo dịch vụ mạng ngày phát triển, mở rộng hoàn thiện hơn, tồn nhiều khuyết điểm song không tiện lợi từ công nghệ đem lại cho xã hội loài người nhanh chóng xác Thư điện tử dần thay thư tay, hội nghị truyền hình với âm hình ảnh trực tiếp giúp linh hoạt hóa công việc tổ chức, đoàn thể Người bác sĩ trực tiếp đứng phòng mổ thực ca phẫu thuật với xác cao, độ an toàn tuyệt đối… nhiều lợi ích mà công nghệ thông tin đem lại cho chúng ta, dựa vào đâu mà công nghệ thực điều tưởng chừng tích tắc vậy? Ngôn ngữ lập trình phần thiếu việc xây dựng nên giới công nghệ linh hoạt mạnh mẽ Không gian làm việc Microsoft Net tổng hợp bốn ngôn ngữ lập trình: C#, VB.NET, Managed C++, and J# NET có chồng gối lên ngôn ngữ, định nghĩa FCL (framework class library) Hỗ trợ cho lập trình viên phát triển ứng dụng mạng với kích thước nhẹ mạnh mẽ xử lý Dựa kiến thức lập trình mạng với C#, đa dạng dịch vụ mạng với nhiều tính đòi hỏi ngày cao Từ ý tưởng xây dựng chương trình có khả tương tác với máy tính từ xa thông qua hệ thống mạng, chương trình Remote desktop xây dựng, dựa theo mô hình Client-Server hỗ trợ tính tương tác với máy tính từ xa tắt máy, khởi động lại máy, ngủ đông, khóa máy, chạy số ứng dụng, gửi thông điệp, gửi file hay lấy file từ máy điều khiển… sử dụng ngôn ngữ lập trình C# Trong trình xây dựng chương trình không tránh khỏi sai sót kính mong thầy cô bạn đóng góp ý kiến xây dựng để nhóm hoàn thiện Nhóm 2_MM02A CHƯƠNG CƠ SỞ LÝ THUYẾT VỀ NET Lập Trình Mạng Nâng Cao Trang Ket-noi.com diễn đàn công nghệ, giáo dục CHƯƠNG : LẬP TRÌNH MẠNG TRONG NET FRAMEWORK 2.1 Sử dụng lớp hỗ trợ xây dựng từ lớp Socket 2.2 Socket không đồng 10 2.3 Sử dụng Thread ứng dụng mạng 14 CHƯƠNG 3: CHƯƠNG TRÌNH REMOTE DESKTOP 18 3.1 iới thiệu giao thức Remote Desktop: 18 3.2 chế hoạt động Remote Desktop: 19 3.3 Chương trình: 23 3.4 Hướng dẫn sử dụng 42 KÊT LUẬN 46 TÀI LIỆU THAM KHẢO 47 CHƯƠNG CƠ SỞ LÝ THUYẾT VỀ NET 1.1 Giới thiệu ngôn ngữ C#: Microsoft Net ngôn ngữ lập trình, không gian làm việc tổng hợp bốn ngôn ngữ lập trình: C#, VB.NET, Managed C++, and J# NET có chồng gối lên ngôn ngữ, định nghĩa FCL (framework class library) Microsoft Net bao gồm phần chính: Framework Intergrated Development Enviroment (IDE) Framework cung cấp cần thiết bản, khuôn dạng hay môi trường hỗ trợ hạ tầng sở theo quy ước định để công việc thuận tiện IDE cung cấp môi trường giúp triển khai dễ dàng nhanh chóng ứng dụng dựa tảng Net Lập Trình Mạng Nâng Cao Trang Ket-noi.com diễn đàn công nghệ, giáo dục Thành phần Framework quan trọng NET cốt lõi tinh hoa môi trường, IDE công cụ để phát triển dựa tảng Trong NET toàn ngôn ngữ C#, Visual C++ hay Visual Basic.NET dùng IDE Microsoft NET tảng cho việc xây dựng thực thi ứng dụng phân tán hệ Bao gồm ứng dụng từ client đến server dịch vụ khác Một số tính Microsoft NET cho phép nhà phát triển sử dụng sau: • Một mô hình lập trình cho phép nhà phát triển xây dựng ứng dụng dịch vụ web ứng dụng client với Extensible Markup Language (XML) • Tập hợp dịch vụ XML Web, Microsoft NET My Services cho phép nhà phát triển đơn giản tích hợp người dùng kinh nghiệm • Cung cấp server phục vụ bao gồm: Windows 2000, SQL Server, BizTalk Server, tất điều tích hợp, hoạt động, quản lý dịch vụ XML Web ứng dụng • Các phần mềm client Windows XP Windows CE giúp người phát triển phân phối sâu thuyết phục người dùng kinh nghiệm thông qua dòng thiết bị • Nhiều công cụ hỗ trợ Visual Studio NET, để phát triển dịch vụ Web XML,ứng dụng Windows hay web cách dể dàng hiệu Lập Trình Mạng Nâng Cao Trang Ket-noi.com diễn đàn công nghệ, giáo dục 1.2 Kiến trúc Net Mô hình kiến trúc Net: NET Framework platform làm đơn giản việc phát triển ứng dụng môi trường phân tán Internet .NET Framework thiết kế đầy đủ để đáp ứng theo quan điểm sau: Để cung cấp môi trường lập trình hướng đối tượng vững chắc, mã nguồn đối tượng lưu trữ thực thi cách cục Thực thi cục phân tán Internet, thực thi từ xa Để cung cấp môi trường thực thi mã nguồn mà tối thiểu việc đóng gói phần mềm tranh chấp phiên Để cung cấp môi trường thực thi mã nguồn mà đảm bảo việc thực thi an toàn mã nguồn, bao gồm việc mã nguồn tạo hãng thứ ba hay hãng mà tuân thủ theo kiến trúc NET Để cung cấp môi trường thực thi mã nguồn mà loại bỏ lỗi thực script hay môi trường thông dịch Lập Trình Mạng Nâng Cao Trang Ket-noi.com diễn đàn công nghệ, giáo dục Để làm cho người phát triển có kinh nghiệm vững nắm vững nhiều kiểu ứng dụng khác Như từ ứng dụng Windows đến ứng dụng dựa web Để xây dựng tất thông tin dựa triên tiêu chuẩn công nghiệp để đảm bảo mã nguồn NET tích hợp với mã nguồn khác .NET Framework có hai thành phần chính: Common Language Runtime (CLR) thư viện lớp NET Framework CLR tảng NET Framework Phát triển ứng dụng Client Những ứng dụng client gần với ứng dụng kiểu truyền thống lập trình dựa Windows Đây kiểu ứng dụng hiển thị cửa sổ hay form desktop cho phép người dùng thực thao tác hay nhiệm vụ Những ứng dụng client bao gồm ứng dụng xử lý văn bản, xử lý bảng tính, ứng dụng lĩnh vực thương mại công cụ nhập liệu, công cụ tạo báo cáo Những ứng dụng client thường sử dụng cửa sổ, menu, toolbar, button hay thành phần GUI khác, chúng thường truy cập tài nguyên cục tập tin hệ thống, thiết bị ngoại vi máy in Một loại ứng dụng client khác với ứng dụng truyền thống ActiveX control (hiện thay Windows Form control) nhúng vào trang web Internet Các ứng dụng giống ứng dụng client khác truy cập tài nguyên cục Những lớp NET Framework chứa NET Framework thiết kế cho việc sử dụng phát triển GUI Điều cho phép người phát triển nhanh chóng dễ dàng tạo cửa sổ, button, menu, toolbar, thành phần khác ứng dụng viết phục vụ cho lĩnh vực thương mại 1.3 Ngôn ngữ C# Ngôn ngữ C# đơn giản, khoảng 80 từ khóa mười kiểu liệu xây dựng sẵn Tuy nhiên, ngôn ngữ C# có ý nghĩa cao thực thi Lập Trình Mạng Nâng Cao Trang Ket-noi.com diễn đàn công nghệ, giáo dục khái niệm lập trình đại C# bao gồm tất hỗ trợ cho cấu trúc, thành phần component, lập trình hướng đối tượng Phần cốt lõi hay gọi trái tim ngôn ngữ lập trình hướng đối tượng hỗ trợ cho việc định nghĩa làm việc với lớp Những lớp định nghĩa kiểu liệu mới, cho phép người phát triển mở rộng ngôn ngữ để tạo mô hình tốt để giải vấn đề Ngôn ngữ C# chứa từ khóa cho việc khai báo kiểu lớp đối tượng phương thức hay thuộc tính lớp, cho việc thực thi đóng gói, kế thừa, đa hình, ba thuộc tính ngôn ngữ lập trình hướng đối tượng Trong ngôn ngữ C# thứ liên quan đến khai báo lớp điều tìm thấy phần khai báo Định nghĩa lớp ngôn ngữ C# không đoi hỏi phải chia tập tin header tập tin nguồn giống ngôn ngữ C++ Hơn nữa, ngôn ngữ C# hỗ trợ kiểu XML, cho phép chèn tag XML để phát sinh tự động document cho lớp Ngôn ngữ C# cung cấp đặc tính hướng thành phần (componentoriented), thuộc tính, kiện Lập trình hướng thành phần hỗ trợ CLR cho phép lưu trữ metadata với mã nguồn cho lớp Lập Trình Mạng Nâng Cao Trang Ket-noi.com diễn đàn công nghệ, giáo dục CHƯƠNG : LẬP TRÌNH MẠNG TRONG NET FRAMEWORK 2.1 Sử dụng lớp hỗ trợ xây dựng từ lớp Socket 2.1.1 Lớp TCPClient Dùng giao thức hai bên không cần phải thiết lập kết nối trước gửi mức dộ tin cậy ko cao Để đảm bảo độ tin cậy ứng dụng mạng người ta sử dụng giao thức khác gọi giao thức có kết nối: TCP (transport control protocol) Để lập trình theo giao thức TCP, MS.NET cung cấp hai lớp có tên TCPClient TCPListener Các thành phần lớp TcpClient Phương thức khởi tạo: Constructor method Name Description TcpClient () Tạo đối tượng TcpClient Chưa đặt thông số TcpClient (IPEndPoint) Tạo TcpClient gắn cho EndPoint cục (gán địa máy cục số hiệu cổng để sử dụng trao đổi thông tin sau) TcpClient (RemoteHost: Int32) String Tạo đối tượng TcpClient kết nối đến máy có địa số hiệu cổng truyền vào RemoteHost địa IP chuẩn tên máy Một số thuộc tính: Name Description Available Cho biết số byte nhận từ mạng có sẵn để đọc Client Trả socket ứng với TCPClient hành Lập Trình Mạng Nâng Cao Trang Ket-noi.com diễn đàn công nghệ, giáo dục Connected Trạng thái cho biết kết nối đến server hay chưa ? Một số phương thức: Name Description Close Giải phóng đối tượng TcpClient không đóng kết nối Connect (RemoteHost, Kết nối đến máy TCP khác có tên số hiệu Port) cổng GetStream Trả NetworkStream để từ giúp ta gửi hay nhận liệu (thường làm tham số tạo StreamReader StreamWriter) Khi gắn vào StreamReader vá StreamWriter ta gửi nhận liệu thông qua phương thức Readln, writeline tương ứng lớp 2.1.2 Lớp TCPListener TCPListener lớp cho phép người lập trình xây dựng ứng dụng server Các thành phần lớp TcpListent: Phương thức khởi tạo: Constructor method Name Description TcpListener (Port: Int32) Tạo TcpListener lắng nghe cổng định TcpListener (IPAddress, Tạo TcpListener lắng nghe kết nối đến Int32) địa IP cổng định TcpListener (IPEndPoint) Tạo TcpListener với giá trị EndPoint truyền vào Các phương thức khác: Lập Trình Mạng Nâng Cao Trang Ket-noi.com diễn đàn công nghệ, giáo dục Name Description AcceptTcpClient Chấp nhận yêu cầu kết nối chờ (ứng dụng dừng câu lệnh có kết nối đến) AcceptSocket Chấp nhận yêu cầu kết nối chờ Pending Cho biết liệu có kết nối chờ đợi không? ( True = có) Start Bắt đầu lắng nghe yêu cầu kết nối Stop Dừng việc nghe 2.1.3 Lớp UDPClient Giao thức UDP (user datagram protocol hay user define protocol) giao thức phi kết nối có nghĩa bên gửi liệu cho bên mà không cần biết bên có sẵn sàng hay chưa? Giao thức không tin cậy giao thức TCP tốc độ nhanh dễ cài đặt ra, với giao thức UDP ta gửi gói tin quảng bá đến nhiều máy Trong NET, lớp UDPClient đóng gói chức giao thức UDP Constructor method Description UdpClient () Tạo đối tượng (thể hiện) lớp UDPClient UdpClient (AddressFamily) Tạo đối tượng lớp UDPClient Thuộc dòng địa định UdpClient (Int32) Tạo UdpClient gắn cổng cho UdpClient (IPEndPoint) Tạo UdpClient gắn IPEndPoint cho UdpClient (Int32, Tạo UdpClient gắn số hiệu cổng, AddressFamily) AddressFamily UdpClient (String, Int32) Tạo UdpClient thiết lập với máy Lập Trình Mạng Nâng Cao Trang Ket-noi.com diễn đàn công nghệ, giáo dục trạm từ xa mặc định PUBLIC Method Name Description BeginReceive Nhận liệu không đồng từ máy tính từ xa BeginSend Gửi không đồng liệu tới máy xa Close Đóng kết nối Connect Thiết lập default remote host EndReceive Kết thúc nhận liệu không đồng EndSend Kết thúc việc gửi liệu không đồng Receive Nhận liệu (đồng bộ) máy tính xa gửi Send Gửi liệu (đồng bộ) cho máy xa 2.2 Socket không đồng 2.2.1 Mô hình xử lý kiện Windows Mô hình sử lý kiện thể qua mô hình sau: Lập Trình Mạng Nâng Cao Trang 10 Ket-noi.com diễn đàn công nghệ, giáo dục 3.3.4 Code chương trinh client:  Kết nối đến client thông qua địa ip port private void Main_Load(object sender, EventArgs e) { ip = Dns.GetHostByName(Dns.GetHostName()).AddressList[0].ToString(); this.Text = "IP: " + ip; textBox1.Text = ip; } private void Send(string s) { StreamWriter gui = new StreamWriter(client.GetStream()); gui.WriteLine(s); gui.Flush(); } private void Main_FormClosing(object sender, FormClosingEventArgs e) { if (client.Connected) Send(commandType.NgatKetNoi.ToString()); } private void button1_Click(object sender, EventArgs e) { if (!client.Connected && button1.Text == "&Ok") { try { client.Connect(textBox1.Text, 8080); Lập Trình Mạng Nâng Cao Trang 33 Ket-noi.com diễn đàn công nghệ, giáo dục StreamWriter gui = new StreamWriter(client.GetStream()); gui.WriteLine(commandType.KetNoi.ToString() + "$" + ip); gui.Flush(); gui = null; if (client.Client.Connected) { list.Items.Add("Đã kết nối "); nghe = new Thread(new ThreadStart(langnghe)); nghe.Start(); send.Enabled = true; chat.Enabled = true; textBox1.Enabled = false; button1.Text = "&Ngắt "; hệThốngToolStripMenuItem.Enabled = true; fileToolStripMenuItem.Enabled = true; runToolStripMenuItem.Enabled = true; } } catch (Exception err) { MessageBox.Show(err.Message.ToString(), "Loi ket noi"); } } else if (button1.Text == "&Ngắt ") { button1.Text = "&Ok"; Send(commandType.NgatKetNoi.ToString()); start(Application.ExecutablePath); Application.Exit(); Lập Trình Mạng Nâng Cao Trang 34 Ket-noi.com diễn đàn công nghệ, giáo dục } } private void start(string s) { ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = s; startInfo.ErrorDialog = true; using (Process process = new Process()) { process.StartInfo = startInfo; try { process.Start(); } catch (Exception ex) { MessageBox.Show("Lỗi: " + ex.ToString(), "Error"); } } }  Lấy liệu từ server public void langnghe() { nhan = new Thread(new ThreadStart(nhadulieu)); nhan.Start(); } Lập Trình Mạng Nâng Cao Trang 35 Ket-noi.com diễn đàn công nghệ, giáo dục private void nhadulieu() { try { byte[] data = new byte[1024]; int receiv = 0; String Stringdata; NetworkStream stream = new NetworkStream(client.Client); while (true) { receiv = client.Client.Receive(data); Stringdata = Encoding.UTF8.GetString(data, 0, receiv).TrimEnd(); String[] s = Stringdata.Split('$'); if (s[0] == commandType.NgatKetNoi.ToString()) { list.Items.Add("Đã ngắt kết nối "); break; } else if (s[0] == commandType.Chat.ToString()) { list.Items.Add(s[1]); } else if (s[0] == commandType.ThongBao.ToString()) { MessageBox.Show(s[1]); } else if (s[0] == commandType.File.ToString()) { FileStream f1 = null; Lập Trình Mạng Nâng Cao Trang 36 Ket-noi.com diễn đàn công nghệ, giáo dục BinaryWriter f2 = null; try { f1 = new FileStream(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\" + s[2], FileMode.Create); f2 = new BinaryWriter(f1); int block = 1024; byte[] buff = new byte[block]; long seek = 0; long max = long.Parse(s[1]); { receiv = client.Client.Receive(buff); f2.Write(buff); seek++; } while (seek < max); MessageBox.Show("Đã nhận: " + Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\" + s[2]); } catch (Exception ioe) { MessageBox.Show("Lỗi: " + ioe.Message, "Loi!"); } finally { if (f2 != null) f2.Close(); Lập Trình Mạng Nâng Cao Trang 37 Ket-noi.com diễn đàn công nghệ, giáo dục if (f1 != null) f1.Close(); } } } client.Close(); Application.Restart(); } catch { client.Close(); Application.Restart(); } } private void send_Click(object sender, EventArgs e) { if (chat.Text.Trim() == "") { chat.Text = ""; } else { Send(commandType.Chat + "$" + chat.Text.Trim()); list.Items.Add(chat.Text.Trim()); chat.Text = ""; chat.Focus(); } } Lập Trình Mạng Nâng Cao Trang 38 Ket-noi.com diễn đàn công nghệ, giáo dục private void chat_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { e.Handled = true; send_Click(null, null); } }  Gửi file cho server private void gửiFileToolStripMenuItem_Click(object sender, EventArgs e) { openFileDialog1.ShowDialog(); } private void openFileDialog1_FileOk(object sender, CancelEventArgs e) { FileStream f1 = null; BinaryReader f2 = null; try { f1 = new FileStream(openFileDialog1.FileName, FileMode.Open); f2 = new BinaryReader(f1); int block = 1024; byte[] buff = new byte[block]; long seek = 0; long max = f1.Length / block + 1; Lập Trình Mạng Nâng Cao Trang 39 Ket-noi.com diễn đàn công nghệ, giáo dục Send(commandType.File + "$" + max + "$" + new FileInfo(openFileDialog1.FileName).Name); { BinaryWriter b = new BinaryWriter(client.GetStream()); b.Write(f2.ReadBytes(block)); seek++; } while (seek < max); MessageBox.Show("Đã gửi: " + openFileDialog1.FileName); } catch (Exception ioe) { MessageBox.Show("Lỗi: " + ioe.Message, "Loi!"); } finally { if (f2 != null) f2.Close(); if (f1 != null) f1.Close(); } }  Lấy file từ client private void lấyFileToolStripMenuItem_Click(object sender, EventArgs e) { if (chat.Text.Trim() == "") { MessageBox.Show("Chưa nhập file cần lấy!"); chat.Focus(); } Lập Trình Mạng Nâng Cao Trang 40 Ket-noi.com diễn đàn công nghệ, giáo dục else { Send(commandType.LayFile.ToString() + "$" + chat.Text.Trim()); } }  Gửi lệnh điều khiển cho server private void tắtMáyToolStripMenuItem_Click(object sender, EventArgs e) { Send(commandType.TatMay.ToString()); } private void khởiĐộngLạiToolStripMenuItem_Click(object sender, EventArgs e) { Send(commandType.KhoiDongLai.ToString()); } private void khToolStripMenuItem_Click(object sender, EventArgs e) { Send(commandType.KhoaMay.ToString()); } private void tạmdừngToolStripMenuItem_Click(object sender, EventArgs e) { Send(commandType.TamDung.ToString()); } private void ngủĐôngToolStripMenuItem_Click(object sender, EventArgs e) { Lập Trình Mạng Nâng Cao Trang 41 Ket-noi.com diễn đàn công nghệ, giáo dục Send(commandType.NguDong.ToString()); }  Khởi động ứng dụng máy server private void runToolStripMenuItem_Click(object sender, EventArgs e) { Input i = new Input(); i.ShowDialog(); string[] s = i.KQ(); if (s != null) Send(commandType.ChayUngDung.ToString() + "$" + s[0] + "$" + s[1] + "$" + s[2]); } private void thoátToolStripMenuItem_Click(object sender, EventArgs e) { Send(commandType.Thoat.ToString()); } private void button2_Click(object sender, EventArgs e) { Application.Exit(); } } 3.4 Hướng dẫn sử dụng 3.4.1 Khởi động chương trình Để remote đến máy máy phải chạy chương trình remote server Máy muốn Remote đến chạy chương trình Remote client nhập địa ip máy chạy chương trình remote server Lập Trình Mạng Nâng Cao Trang 42 Ket-noi.com diễn đàn công nghệ, giáo dục 3.4.2 Gửi nhận file Muốn lấy file từ máy điều khiển cần nhập tên đương dẫn đến file cần lấy bên máy điều khiển khung gửi thông điệp chọn File nhận file Muốn gửi file ta chon File chọn gửi file sẻ hộp thoại chọn đường dẫn đến file cần gửi Lập Trình Mạng Nâng Cao Trang 43 Ket-noi.com diễn đàn công nghệ, giáo dục 3.4.3 Điều khiển máy từ xa Chọn Hệ thống sẻ có lệnh để gửi đến máy cần điều khiển 3.4.4 Thực thi ứng dụng Từ máy tính điều khiển ta chọn Run xuất hộp thoại Lập Trình Mạng Nâng Cao Trang 44 Ket-noi.com diễn đàn công nghệ, giáo dục Ta nhập tên processes, hay đương dẫn chương trình muốn thực thi Đối số truyền vào để nhập địa cho iexplore hay lệnh ping Chọn lấy kết thực thi lấy kết chương trình console Lập Trình Mạng Nâng Cao Trang 45 Ket-noi.com diễn đàn công nghệ, giáo dục KÊT LUẬN Kết đạt  Đề tài viết chương trình remote desktop thức nội dung - Tìm hiểu cách lập trình socket lập trình đa luồng NET - Tìm hiểu cách hoạt động chương trình điểu khiển máy tính từ xa đơn giản  + - Ưu nhược điểm chương trình Ưu điểm Đơn giản gọn nhẹ Nhược điểm + Chưa nhìn thấy hình máy được điều khiển + Khó sử dụng việc mở ứng dụng lấy file Hướng phát triển Về bản, nghiên cứu đạt yêu cầu đặt Tuy nhên có điều kiện, đồ án cố gắng phát triển thêm chức sau: - Có thể nhìn thấy hình máy server - Điều khiển máy thông qua hình Lập Trình Mạng Nâng Cao Trang 46 Ket-noi.com diễn đàn công nghệ, giáo dục TÀI LIỆU THAM KHẢO Tài liệu: [1] Dương Quang Thiện, 2005, NET toàn tập [2] Nguyễn Ngọc Bình Phương, 2005, Các giải pháp lập trình C# [3] Sybex, 2003, C-Sharp Network Programming Các trang Web [1] http://www.codeproject.com [2] http://www.codeguru.com Lập Trình Mạng Nâng Cao Trang 47 [...]... the worker thread UnsafeRegisterWaitForSingleObject () Registers an unsafe delegate waiting for a WaitHandle object Lập Trình Mạng Nâng Cao Trang 17 Ket-noi.com diễn đàn công nghệ, giáo dục CHƯƠNG 3: CHƯƠNG TRÌNH REMOTE DESKTOP 3.1 iới thiệu giao thức Remote Desktop: Giao thức Remote Desktop là kết nối cơ bản với giao diện đồ họa được thiết kế để tạo điều kiện thuận lợi cho người sử dụng tương tác với... toán: Dựa trên nên tảng giao thức Remote Desktop có sẵn, tiến hành xây dựng mô hình Client-Server hỗ trợ các tính năng cơ bản tương tác với máy tính từ xa như tắt máy, khởi động lại máy, ngủ đông, khóa máy, chạy một số ứng dụng, gửi thông điệp, gửi một file hay lấy 1 file từ máy đang điều khiển… sử dụng ngôn ngữ lập trình C# 3.3.2 Giao diện chương trình: Server: Lập Trình Mạng Nâng Cao Trang 23 Ket-noi.com... server gửi PDUs xuyên suốt quá trình kết nối PDUs từ client tới người server và từ server tới client được trao đổi trong suốt pha có thể Sau khi client nhận Font Map PDU nó có thể bắt đầu điều khiển chuột và phím đến server, nó tiến hành tương tác với Remote computer với giao diện đồ họa Lập Trình Mạng Nâng Cao Trang 22 Ket-noi.com diễn đàn công nghệ, giáo dục 3.3 Chương trình: 3.3.1 Yêu cầu bài toán:... nguyên khác Bộ nhớ và tài nguyên vật lý riêng biệt này được gọi là một tiến trình Các tài nguyên và bộ nhớ của một tiến trình thì chỉ tiến trình đó được phép truy cập Tuyến (Thread ): trong hệ thống một tiến trình có thể có một hoặc nhiều chuỗi thực hiện tách biệt khác nhau và có thể chạy đồng thời mỗi chuỗi thực hiện này Lập Trình Mạng Nâng Cao Trang 14 Ket-noi.com diễn đàn công nghệ, giáo dục được... (Thread) Trong 1 ứng dụng Thread khởi tạo đầu tiên gọi là Thread sơ cấp hay Thread chính 2.3.2 Sử dụng Thread trong chương trình Net Để sử dụng Thread trong NET ta sử dụng namespace System.Threading Một số phương thức thường dùng: Public Method Mô tả Name Abort () Kết thúc Thread Join () Buộc chương trình phải chờ cho thread kết thúc (Block) thì mới thực hiện tiếp (các câu lệnh đứng sau Join) Resume () Tiếp... BeginConnect () To connect to a remote host Lập Trình Mạng Nâng Cao EndConnect () Trang 11 Ket-noi.com diễn đàn công nghệ, giáo dục BeginReceive () To retrieve data from a socket EndReceive () BeginReceiveFrom () To retrieve data from a specific EndReciveFrom() remote host BeginSend () To send data from a socket EndSend () BeginSendTo () To send data to a specific EndSendTo () remote host Để chấp nhận kết... cơ chế cho phép đơn giản hóa việc truyền thông chuyên dụng mở rộng giữa người sử dụng máy tính trực tiếp và những thành phần chạy trên máy tính ở Lập Trình Mạng Nâng Cao Trang 18 Ket-noi.com diễn đàn công nghệ, giáo dục 3.2 cơ chế hoạt động của Remote Desktop: 3.2.1 Connection Initiation Client thực hiện kết nối đến server bằng cách gửi gói tin yêu cầu kết nối PDU x.224 Server phản hồi lại với gói xác... ReceiveData(IasyncResult iar){ Socket remote = (Socket)iar.AsyncState; int recv = remote. EndReceiveFrom(iar); string stringData = Encoding.ASCII.GetString(data, 0, recv); Console.WriteLine(stringData); } 2.3 Sử dụng Thread trong các ứng dụng mạng 2.3.1 Một số khái niệm Đa nhiệm (multitasking ): là khả năng hệ điều hành làm nhiều công việc tại một thời điểm Tiến trình (Process): khi chạy một ứng dụng... SocketFlags.None, new AsyncCallback(ReceivedData), sock); Với ReceivedData được định nghĩa như sau: void ReceivedData(IAsyncResult iar) { Socket remote = (Socket)iar.AsyncState; Lập Trình Mạng Nâng Cao Trang 13 Ket-noi.com diễn đàn công nghệ, giáo dục int recv = remote. EndReceive(iar); string receivedData = Encoding.ASCII.GetString(data, 0, recv); Console.WriteLine(receivedData); } Nhận dữ liệu bất đồng... khiển… sử dụng ngôn ngữ lập trình C# 3.3.2 Giao diện chương trình: Server: Lập Trình Mạng Nâng Cao Trang 23 Ket-noi.com diễn đàn công nghệ, giáo dục Client: Lập Trình Mạng Nâng Cao Trang 24 Ket-noi.com diễn đàn công nghệ, giáo dục 3.3.3 Code chương trình Server:  Lắng nghe kết nối trên port 8080 private void Main_Load(object sender, EventArgs e) { langnghe = new Thread(new ThreadStart(LangNghe)); langnghe.Start(); ... Khởi động chương trình Để remote đến máy máy phải chạy chương trình remote server Máy muốn Remote đến chạy chương trình Remote client nhập địa ip máy chạy chương trình remote server Lập Trình Mạng... WaitHandle object Lập Trình Mạng Nâng Cao Trang 17 Ket-noi.com diễn đàn công nghệ, giáo dục CHƯƠNG 3: CHƯƠNG TRÌNH REMOTE DESKTOP 3.1 iới thiệu giao thức Remote Desktop: Giao thức Remote Desktop kết nối... 14 CHƯƠNG 3: CHƯƠNG TRÌNH REMOTE DESKTOP 18 3.1 iới thiệu giao thức Remote Desktop: 18 3.2 chế hoạt động Remote Desktop: 19 3.3 Chương trình:

Ngày đăng: 28/11/2015, 09:06

Từ khóa liên quan

Mục lục

  • CHƯƠNG 3 CƠ SỞ LÝ THUYẾT VỀ .NET

    • 1.1. Giới thiệu về ngôn ngữ C#:

    • 1.2. Kiến trúc .Net

    • 1.3. Ngôn ngữ C#

    • CHƯƠNG 2 : LẬP TRÌNH MẠNG TRONG .NET FRAMEWORK

      • 2.1 Sử dụng các lớp hỗ trợ được xây dựng từ lớp Socket

        • 2.1.1 Lớp TCPClient

        • 2.1.2. Lớp TCPListener

        • 2.1.3. Lớp UDPClient

        • 2.2. Socket không đồng bộ

          • 2.2.1. Mô hình xử lý sự kiện của Windows

          • 2.2.2. Sử dụng Socket không đồng bộ

          • 2.3. Sử dụng Thread trong các ứng dụng mạng

            • 2.3.1. Một số khái niệm

            • 2.3.2. Sử dụng Thread trong chương trình .Net

            • 2.3.3. Sử dụng Threadpool trong các chương trình .Net

            • CHƯƠNG 3: CHƯƠNG TRÌNH REMOTE DESKTOP

              • 3.1. iới thiệu giao thức Remote Desktop:

              • 3.2. cơ chế hoạt động của Remote Desktop:

                • 3.2.1. Connection Initiation

                • 3.2.2. Basic Settings Exchange

                • 3.2.3. Channel Connection

                • 3.2.4. RDP Sercurity Commencement

                • 3.2.5. Secure Settings Exchange:

                • 3.2.6. Licensing:

                • 3.2.7. Capabilities Negotiation:

                • 3.2.8. Connection Finalization:

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan