Các giải pháp lập trình CSharp- P55 docx

10 269 0
Các giải pháp lập trình CSharp- P55 docx

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

Thông tin tài liệu

431 Chương 10: Cơ sở dữ liệu Hình 10.25 Gõ tiêu đề Category - Product Report 11. Nhắp Finish. File CrystalReport1.rpt (xem hình 10.26) sẽ được thêm vào dự án. Hình 10.26 Bản báo cáo đã được thiết kế 432 Chương 10: Cơ sở dữ liệu Chúng ta đã xây dựng xong bản báo cáo. Bước thứ hai là thiết lập một cơ chế để xem bản báo cáo này. Bước này khá dễ dàng. Bạn hãy kéo điều kiểm CrystalReportViewer từ hộp công cụ vào form mặc định. Nhắp phải vào CrystalReportViewer , và chọn Properties. Tìm thuộc tính Dock và chọn Fill (xem hình 10.27). Tùy chọn này sẽ khiến CrystalReportViewer lấp đầy vùng client của form. Kế tiếp, tìm thuộc tính ReportSource , và nhắp Browse. Chọn file CrystalReport1.rpt mà chúng ta vừa xây dựng. Bây giờ, bạn hãy chạy chương trình để xem kết quả (xem hình 10.29). Hình 10.27 Tìm thuộc tính Dock và chọn Fill 433 Chương 10: Cơ sở dữ liệu Hình 10.28 Form báo cáo hoàn chỉnh Hình 10.29 Trình bày báo cáo với Crystal Report Như bạn có thể thấy, điều kiểm CrystalReportViewer khá tinh vi. Bạn có thể sử dụng các chức năng có sẵn để phân trang và in báo cáo. Bạn có thể nhắp nút Export Report (hình phong bì với mũi tên đỏ) để xuất báo cáo thành một file Adobe Acrobat (.pdf), Microsoft Excel (.xls), Microsoft Word (.doc), hay Rich Text Document (.rtf). Bạn cũng có thể phóng to bản báo cáo hoặc tìm kiếm text bên trong bản báo cáo. Trình thuật sĩ này này mạnh đến nỗi bạn không phải viết dòng mã nào cả. Một file mã nguồn báo cáo, chứa một lớp báo cáo cho bản báo cáo này, tự động được sinh ra. Lớp báo cáo này có lớp cơ sở là ReportClass . 434 Chương 10: Cơ sở dữ liệu 11 435 Chương 11:LẬP TRÌNH MẠNG 436 437 Chương 11: Lập trình mạng icrosoft .NET Framework bao gồm một tập các lớp dùng để lập trình mạng thuộc hai không gian tên: System.Net và System.Net.Sockets . Các lớp này hỗ trợ mọi thứ, từ lập trình dựa-trên-socket với TCP/IP cho đến download file và trang HTML từ web thông qua HTTP. Hai không gian tên này cũng là nền tảng cho hai nền networking cấp cao hơn—Remoting và dịch vụ Web XML. Hai nền này sẽ được đề cập chi tiết trong chương 12. Chương này sẽ trình bày các vấn đề sau: M  Lấy tài nguyên từ web thông qua HTTP (mục 11.1, 11.2, và 11.3).  Hiển thị một trang web trong một ứng dụng dựa-trên-Windows bằng điều kiểm Web Browser (mục 11.4).  Lấy địa chỉ IP và thông tin DNS về máy tính hiện hành và các miền khác trên World Wide Web (mục 11.5 và 11.6).  Gửi thông điệp “ping” (mục 11.7) và giao tiếp bằng giao thức TCP và UDP (mục 11.8 đến 11.13).  Gửi và nhận e-mail (mục 11.14 và 11.15). 1. 1. Download file thông qua HTTP Download file thông qua HTTP   Bạn cần một cách thật nhanh và đơn giản để download một file từ một website thông qua HTTP .   Sử dụng phương thức tĩnh DownloadFile của lớp System.Net.WebClient . .NET Framework cung cấp vài cơ chế dùng để gửi dữ liệu thông qua HTTP. Một trong những cách dễ nhất là sử dụng lớp System.Net.WebClient . Nó cung cấp những phương thức mức-cao như DownloadFile và UploadFile . Các phương thức này không có sự hỗ trợ nội tại nào cho giao tiếp bất đồng bộ, hay xác thực. Nếu cần các tính năng này, bạn có thể sử dụng các chức năng phức tạp hơn do lớp WebRequest và WebResponse cung cấp (sẽ được mô tả trong mục 11.2 và 11.3). Chương trình ví dụ dưới đây sẽ download file winXP.gif từ localhost và lưu vào đĩa. using System; using System.Net; using System.IO; public class Download { private static void Main() { string remoteUri = "http://localhost/winXP.gif"; string localFileName = "winXP.gif"; WebClient client = new WebClient(); 438 Chương 11: Lập trình mạng Console.WriteLine("Downloading file " + remoteUri + " to " + Path.GetFullPath(localFileName)); // Thực hiện download. client.DownloadFile(remoteUri, localFileName); Console.WriteLine("Download complete."); Console.ReadLine(); } } 2. 2. Download và x lý file b ng streamử ằ Download và x lý file b ng streamử ằ   Bạn cần lấy một file từ một website, nhưng không muốn lưu trực tiếp vào đĩa. Thay vào đó, bạn muốn xử lý ngay trong ứng dụng của mình.   Sử dụng lớp WebRequest để tạo yêu cầu, lớp WebResponse để nhận đáp ứng từ web- server, và một số dạng reader ( StreamReader đối với dữ liệu HTML hay text, hoặc BinaryReader đối với dữ liệu nhị phân) để phân tích đáp ứng đó. Download một file cần bốn bước cơ bản sau: 1. Sử dụng phương thức tĩnh Create của lớp System.Net.WebRequest để chỉ định trang bạn cần. Phương thức này trả về một đối tượng dẫn xuất từ WebRequest , phụ thuộc vào kiểu Uniform Resource Identifier (URI) bạn sử dụng. Ví dụ, nếu tài nguyên là HTTP (với cụm từ http:// ), nó sẽ tạo ra đối tượng HttpWebRequest ; nếu tài nguyên là file (với cụm từ file:// ), nó sẽ tạo ra đối tượng FileWebRequest . Bạn có thể thiết lập thời gian trễ thông qua thuộc tính WebRequest.Timeout . 2. Sử dụng phương thức GetResponse của đối tượng WebRequest , phương thức này trả về một đối tượng WebResponse cho trang. Nếu yêu cầu vượt qua thời gian trễ thì ngoại lệ WebException sẽ bị ném. 3. Tạo một StreamReader hoặc một BinaryReader cho WebResponse . 4. Công việc cuối cùng là xử lý stream này, chẳng hạn ghi nó ra file rồi hiển thị trong ứng dụng của bạn Đoạn mã dưới đây sẽ lấy và hiển thị một file ảnh và nội dung HTML của một trang web. using System; using System.Net; using System.IO; using System.Drawing; using System.Windows.Forms; 439 Chương 11: Lập trình mạng public class DownloadForm : System.Windows.Forms.Form { private System.Windows.Forms.PictureBox picBox; private System.Windows.Forms.TextBox textBox; // (Bỏ qua phần mã designer.) private void DownloadForm_Load(object sender, System.EventArgs e) { string picUri = "http://localhost/winXP.gif"; string htmlUri = "http://localhost/iishelp/iis/misc/default.asp"; // Tạo yêu cầu. WebRequest requestPic = WebRequest.Create(picUri); WebRequest requestHtml = WebRequest.Create(htmlUri); // Nhận đáp ứng. Công việc này sẽ mất nhiều // thời gian, đặc biệt khi file cần lấy quá lớn. WebResponse responsePic = requestPic.GetResponse(); WebResponse responseHtml = requestHtml.GetResponse(); // Đọc response stream. Image downloadedImage = Image.FromStream(responsePic.GetResponseStream()); StreamReader r = new StreamReader(responseHtml.GetResponseStream()); string htmlContent = r.ReadToEnd(); r.Close(); // Hiển thị ảnh. picBox.Image = downloadedImage; // Hiển thị nội dung dạng text của trang HTML. textBox.Text = htmlContent; } } 440 Chương 11: Lập trình mạng Hình 11.1 Download nội dung của một trang web Để download file lớn một cách hiệu quả, bạn có thể sử dụng kỹ thuật bất đồng bộ đã được mô tả trong chương 4. Bạn cũng có thể sử dụng phương thức WebRequest.BeginGetResponse , phương thức này không chặn mã lệnh của bạn và sẽ gọi thủ tục callback khi nhận được đáp ứng. 3. 3. L y trang HTML t m t website có yêu c u xác th cấ ừ ộ ầ ự L y trang HTML t m t website có yêu c u xác th cấ ừ ộ ầ ự   Bạn cần thu lấy một file từ một website, nhưng website đó yêu cầu một số thông tin xác thực.   Sử dụng lớp WebRequest và WebResponse đã được mô tả trong mục 11.2. Tuy nhiên, trước khi gửi yêu cầu, bạn phải cấu hình thuộc tính WebRequest.Credentials với các thông tin xác thực. Một số website yêu cầu thông tin xác thực từ người dùng. Khi kết nối thông qua trình duyệt, thông tin này có thể được cung cấp một cách trong suốt (ví dụ, một intranet-site cục bộ có sử dụng Integrated Windows authentication), hoặc trình duyệt có thể yêu cầu thông tin này thông qua một hộp thoại đăng nhập. Khi truy xuất một trang web bằng lập trình thì mã lệnh của bạn cần phải cung cấp các thông tin này. . 11:LẬP TRÌNH MẠNG 436 437 Chương 11: Lập trình mạng icrosoft .NET Framework bao gồm một tập các lớp dùng để lập trình mạng thuộc hai không gian tên: System.Net và System.Net.Sockets . Các. authentication), hoặc trình duyệt có thể yêu cầu thông tin này thông qua một hộp thoại đăng nhập. Khi truy xuất một trang web bằng lập trình thì mã lệnh của bạn cần phải cung cấp các thông tin này. . HTML. textBox.Text = htmlContent; } } 440 Chương 11: Lập trình mạng Hình 11.1 Download nội dung của một trang web Để download file lớn một cách hiệu quả, bạn có thể sử dụng kỹ thuật bất đồng

Ngày đăng: 08/07/2014, 17:20

Từ khóa liên quan

Mục lục

  • LỜI NÓI ĐẦU

  • CẤU TRÚC CỦA SÁCH

  • QUY ƯỚC

  • YÊU CẦU VỀ HỆ THỐNG

  • CÁCH SỬ DỤNG ĐĨA CD

  • MỤC LỤC

  • Chương 1:PHÁT TRIỂN ỨNG DỤNG

    • 1. Tạo ứng dụng Console

    • 2. Tạo ứng dụng dựa-trên-Windows

    • 3. Tạo và sử dụng module

    • 4. Tạo và sử dụng thư viện

    • 5. Truy xuất các đối số dòng lệnh

    • 6. Chọn biên dịch một khối mã vào file thực thi

    • 8. Tạo và quản lý cặp khóa tên mạnh

    • 9. Tạo tên mạnh cho assembly

    • 10. Xác minh một assembly tên mạnh không bị sửa đổi

    • 11. Hoãn việc ký assembly

    • 12. Ký assembly với chữ ký số Authenticode

    • 13. Tạo và thiết lập tin tưởng một SPC thử nghiệm

    • 14. Quản lý Global Assembly Cache

    • 15. Ngăn người khác dịch ngược mã nguồn của bạn

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

Tài liệu liên quan