ایران سرفراز- نرم افزار وپروژهای دانشجویی


نرم افزار وپروژهای دانشجویی

فصل بیست و پنجم دستیابی به اینترنت در # C

<!-- /* Font Definitions */ @font-face {font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:-1610611985 1107304683 0 0 159 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman","serif"; mso-fareast-font-family:"Times New Roman";} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; font-size:10.0pt; mso-ansi-font-size:10.0pt; mso-bidi-font-size:10.0pt;} @page Section1 {size:595.3pt 841.9pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:35.4pt; mso-footer-margin:35.4pt; mso-paper-source:0; mso-gutter-direction:rtl;} div.Section1 {page:Section1;} -->

فصل بیست و پنجم

C#   دستیابی به اینترنت در 

آنچه که در این فصل یاد خواهید گرفت:

Web و گذاشتن فایلها روی Web - برداشتن فایلها از

- کار با سرویسهای اینترنتی

WebClient - آشنایی با کلاس

در برنامههای ویندوز Web Browser - کاربرد کنترل جدید

DNS و انجام مراجعههای IP - دستکاری آدرسهای

Internet دستیابی میکنند، کاربرانی خواهند بود که ASP.NET در بیشتر مواقع سرویس گیرندگانی که به صفحات

را اجرا میکنند. با این وجود، ممکن است بخواهید FireFox یا Opera یا کاوشگرهای وب دیگر همچون Explorer

را به برنامهی کاربردی خود اضافه کنید یا نیاز دارید برنامههایی بنویسید که اطلاعات را از یک سایت WEB ویژگیهای کاوش

وب بدست بیاورید. شاید فکر کنید پیادهسازی یک سرویس وب، بهترین راهحل است. با این وجود، اگر به سایتهای عمومی

اینترنت دستیابی میکنید، ممکن است هیچ کنترلی روی نحوهی پیادهسازی سایت نداشته باشید. این فصل امکانات تهیه

جهت دستیابی به TCP و HTTP را برای بکارگیری پروتکلهای مختلف شبکه مخصوصا NET. شده از طریق کلاسهای پایه

شبکهها و اینترنت را میپوشاند.

هستند .فضای System.Net.Socket و System.Net جالبترین فضاهای نامی برای برنام ه نویسی شبکه، فضاه ا ی نامی

کلاسها و عملیات سطح بالا را در بر دار د . برای مثا ل ، گرفتن 1 یا گذاشت ن 2 فایل ها روی وب، انجام System.Net نامی

کلاس هایی را برا ی انجام System.Net.Socket و پروتک ل های دیگر . در حالیکه HTTP درخواستهای وب با استفاده از

کار کنی د ، TCP/IP عملیات سطح پایین در بردار د . در صورتی که بخواهید مستقیماً با سوک ت ها و پروتک ل هایی نظیر

1 Download

2 Upload

mohsen_mahyar@yahoo.com - C# برنامه نویسی

458

را تقلید میکنند (Winsock ) سوکت ویندوز API کلاسهای سطح پایی ن را مفید خواهید یاف ت . متدهای این کلا س ها توابع

که از واسط سوکتهای برکلی مشتق میشوند.

در شبکه را شامل میشود. NET. این فصل یک راهنما برای شبکهبندی کامپیوتر نیست، اما مقدمهای بر کاربرد چارچوب

جدید در محیط ویندوز دارد و اینکه چگونه بعضی از عملیات خاص دستیاب ی به WebBrowser نگاهی کوتاه به کاربرد کنتر ل

اینترنت را سادهتر انجام میدهد.

با این وجود این فصل با ساد ه ترین حالت ارسال یک تقاضا به یک سرور و ذخیره اطلاعات گرفته شده در جوا ب تقاضا شروع

میکند.

WebClient -1-25 کلاس

NET. ساد ه ترین کلاس System.NET.WebClient ، خاص را درخواست کنی د URL اگر می خواهید فقط یک فایل از ی ک

برای این کار اس ت . این کلا س سطح بالا برای انجام عملیات بوسیله یک یا دو فرمان طراحی شده اس ت . در حال حاضر

شروع میشوند، پشتیبانی میکند. :File: HTTPS:, HTTP هایی که با پروتکلهای URI،NET. چارچوب

کمی کل یتر است و شما را به کاربرد پروتک لهایی همچون URI را دار د، اما URL تقریباً همان معنی URI : توجه

مجبور نمیسازد. FTP و HTTP

-1-1-25 گرفتن فایلها

وجود دار د . متد مورد نظر شما به نحو ه ی پردازش محتویات فایل وابسته WebClient برای گرفتن فای ل ها دو متد در کلاس

را بکار برید . این متد دو ()DownloadFile است. اگر می خواهید بطور ساده آن فایل را روی دیسک ذخیره کنی د ، متد

فایل و یک محل (مسیر و نام فایل) برای ذخیره دادههای درخواست شده. URI : پارامتر میگیرد

WebClient Client = new WebClient();

Client.DownloadFile("http://www.reuters.com/", "ReutersHomepage.htm");

معمولاً برنامه کاربردی شما م ی خواهد داد ه های بازیابی کرده از وب سایت را پردازش کن د . برای انجام این کار

بر م ی گرداند. سپس م ی توانی د از آن ارجاع Stream یک ارجاع از نوع ()OpenRead را بکار بری د . متد ()OpenRead متد

جهت بازیابی اطلاعات به حافظه استفاده کنید.

WebClient Client = new WebClient();

Stream strm = Client.OpenRead("http://www.reuters.com/");

WebClient -2-1-25 مثالی از

ListBox را نشان م ی دهد. محتوای صفحه ی گرفته شده را در یک کنترل ()WebClient.OpenRead مثال اول کار متد

ایجاد کرده و یک کنتر ل Windows Forms با استاندارد #c نمایش خواهد داد. برای شروع کار ابتدا یک پروژهی جدید

قرار داده شده باشد. DockStyle.Fill 1اضافه کنید که خصوصیت لنگرگاه آن listBox بنام ListBox

را اضافه کنید و تغییرات زیر را روی سازند ه ی فرم اصلی ایجاد System.IO و system.Net در ابتد ای فایل فضاهای نامی

کنید.

public Form1()

{

فصل بیست و پنجم دستیابی به اینترنت

459

InitializeComponent();

System.Net.WebClient Client = new WebClient();

Stream strm = Client.OpenRead("http://www.reuters.com");

StreamReader sr = new StreamReader(strm);

string line;

while ( (line=sr.ReadLine()) != null )

{

listBox1.Items.Add(line);

}

strm.Close();

}

به جریان شبکه وصل می کنید. با این عمل م ی توانید System.Io را از فضای نامی StreamReader در این مثال کلاس

1 نتایج اجرای این کد را - بدست آوری د . شکل 25 ReadLine محتویات فایل را با استفاده از متدهای سطح بالا یی همچون

نشان میدهد.

1- شکل 25

نیز دارد . این متد یک جریان قابل نوشتن برم ی گرداند که م ی توانید داده ها را به ()OpenWrite یک متد WebClient کلاس

اس ت . تکه post ارسال کنی د . همچنین می توانید روش ارسال داده به منبع را نیز مشخص کنی د . روش پیش فرض URI یک

روی ماشین جاری وج  ود دارد . این کد یک فایل بنام accept کد زیر فرض م ی کند یک فهرست قابل نوشتن بنام

ایجاد خواهد کرد. accept در فهرست hello world با محتویات newfile.txt

WebClient webClient = new WebClient();

Stream stream = webClient.OpenWrite("ftp://localhost/accept/newfile.txt");

StreamWriter streamWriter = new StreamWriter(stream);

streamWriter.WriteLine("Hello World");

streamWriter.Close();

-3-1-25 گذاشتن فایلها

UpLoadFile را در اختیار قرار م ی دهد . متد ()UpLoadData و ()UpLoadFile همچنین متدهای WebClient کلاس

داده های دودویی به UpLoadData یک فایل را از مسیر محلی به یک موقعیت مشخص شده م ی گذارد، در حالی که مت د

مشخص شده میگذارد. URI شکل آرایهای از بایت ها را به

WebClient client = new WebClient();WebClient client = new WebClient();

client.UploadFile("ftp://www.ourwebsite.com/NewFile.htm",

"C:\\WebSiteFiles\\NewFile.htm");

byte[] image;

// code to initialise image so it contains all the binary data for

// some jpg file

client.UploadData("ftp://www.ourwebsite.com/NewFile.jpg", image);

mohsen_mahyar@yahoo.com - C# برنامه نویسی

460

WebResponse و WebRequest -4-1-25 کلاسهای

بسیار ساده اس ت . اما ویژگی های محدود زیادی دار د . مخصوصاً اینکه نمیتوان آنرا برای WebClient اگرچه کاربرد کلاس

تهیهی تصدیق گواهی بکار بر د . یک مشکل گذاشتن داد ه ها عدم پذیرش بسیاری از سای ت ها بدون تصدیق گواهی اس ت .

اضافهکردن اطلاعات سرآیند به درخواس ت ها و بررسی سرآیندها در جواب امکا ن پذیر اس ت ، ولی این عمل در

یک کلاس معمول است که برای ارسال یک تقاضا و دریافت پاسخ با هر WebClient پشتیبانی نمی شود، چون WebClient

نمیتواند همه ویژگیهای خاص هر پروتکل را اداره کند. FTP). WebClient و HTTP پروتکلی طراحی شده است( همانند

را از WebResponse وWebRequest اگر بخواهید از مزایای این ویژگ ی ها بهره مند شوید ، ش ما نیاز دارید دو کلاس دیگ  ر

بکار برید. System.Net فضای نامی

و WebRequest ابتدا نحوه ی گرفتن یک صفحه وب با استفاده از این کلا س ها را ببینی د . این مثال همانند قبلی اس ت ، اما

را برای کاربرد WebClient را استفاده م ی کند. کد زیر تغییرات اساسی مور د نیاز روی مثال قبلی WebResponse

نشان میدهد. WebResponse وWebRequest کلاسهای

()public Form1

}

;()InitializeComponent

;("WebRequest wrq = WebRequest.Create("http://www.reuters.com

;()WebResponse wrs = wrq.GetResponse

;()Stream strm = wrs.GetResponseStream

;(StreamReader sr = new StreamReader(strm

;string line

(while ( (line = sr.ReadLine()) != null

}

;(.Items.Add(line1listBox

{

;()strm.Close

{

آغاز گ شته است . نمونه از ط ر یق یک سازنده ایجاد نشده است و به جای WebRequest کد مثال با تعریف یک نمونه از

ایجاد می شود. همانطور که در ادامه فصل یاد خواهید گرف ت ، ()WebRequest.Create سازنده با فراخوانی متد ایستای

بخشی از یک سلسله مراتب کلا س ها است که پروتک ل های مختلف شبکه را پشتیبانی م ی کنند . متد WebRequest کلاس

یک شیئی مناسب پروتکل داده شده ایجاد میکند. ()WebRequest.Create

به عنوان یک پارامتر به مت  د URI . خاص ارائه می دهد URI تقاضای اطلاعات را برای ارسال به یک WebRequest کلاس

دادههای بازیابی شده از سرور را نشان م ی دهد. با فراخوانی متد WebResponse . رد میشود Create

برای بررسی WebResponse یک تقاضای واقعی به سرور وب ارسال کرده و یک شی ()WebRequest.GetResponse

می توانید یک جریان برای نمایش داد ه ها بکار بری د . اما در ای ن WebClient دادهی بازگشتی ایجاد م ی شود. همانند شی

را بکار میبرید. ()WebResponse.GetResponseStream مثال، متد

فصل بیست و پنجم دستیابی به اینترنت

461

WebResponse و WebRequest -5-1-25 ویژگیهای دیگر

و کلا س های WebResponse و WebRequest این بخش بطور گ ذ را یک مجموعه از توانای ی های پشتیبانی شده بوسیل ه ی

مرتبط دیگر را بحث میکند.

HTTP اطلاعات سرآیند

توانایی ارسال اطلاعات سرآیند به همراه ج ر یانهای تقاضا و جواب اس ت . این اطلاعات ،HTTP یک بخش مهم از پروتکل

پشتیبانی NET. میتوانند جزئیات کاوشگر ارسال کنندهی تقاضا را در بر داشته با ش ند. همان طور که انتظار داری د ، چارچوب

خواندن اطلاعات سرآیند را WebResponse و WebRequest کامل دستیابی به داد ه ها را فراهم م ی سازد . کلا س های

HttpWebRequest, : را فراهم م ی سازند HTTP پشتیبانی میکنند. با این وجود دو کلاس مشتق شده اطلاعات خاص

یک نمونه ،HTTP URI با یک WebRequest همانطور که بعداً بطور دقیق خواهید دید، ایجاد یک .HttpWebResponse

مشتق م ی شود. می توانید نمون ه ی WebRequest از HttpWebRequest نتیجه م ی دهد. چون HttpWebRequest شی

HttpWebRequest بکار برید . علاوه بر این میتوانید نمونه ی ایجاد شده را به یک ارجاع WebRequest جدید را به جای

یک نمونه GetResponse دسترسی داشته باشی د . به همین شکل متد HTTP قالببندی کرده و به خصوصیات خاص پروتکل

بر م ی گرداند. مجدداً با یک قال ب بندی ساده م ی توانید به WebResponse را بصورت یک ارجاع HttpWebResponse از شی

دستیابی کنید. HTTP ویژگیهای خاص

میتوانید مجموعهای از خصوصیات سرآیند را بررسی کنید. ،GetResponse() با اضافهکردن کد زیر قبل از فراخوانی متد

listBox1.Items.Add("Request Timeout (ms) = " + wrq.Timeout);

listBox1.Items.Add("Request Keep Alive = " + hwrq.KeepAlive);

listBox1.Items.Add("Request AllowAutoRedirect = " + hwrq.AllowAutoRedirect);

با واحد میل ی ثانیه است و مقدار پیشفرض آن 100000 میباشد . می توانید این خصوصیت را برای TimeOut خصوصیت

بکار برید . با بررسی (WebException مقداردهی حداکثر زمان انتظار برای دریافت پاسخ ( قبل از رها شدن یک استثنای

می توانید دلیل استثناء را بیابی د . مقدار این خصوصیت مقادیر شمارشی ،WebException کلاس Status خصوصیت

هستند که هر کدام نوع خاصی از خطا را مشخص میکنند.

است . می توانید از طریق یک ارجاع HTTP یک خصوصیت الحاقی خاص به پروتک ل KeepAlive خصوصیت

استفادهی یک اتصال در چندین تقاضا را مجاز م ی دارد و KeepAlive به آن د س تیابی کنید . خصوصیت HttpWebRequest

است. true در زمانهای بستن و باز کردن مجدد اتصال صرفه جویی میکند. مقدار پیشفرض آن

است . این خصوصیت کنترل م ی کند آیا تقاضای HttpWebRequest نیز م خ تص کلاس AllowAutoRedirect خصوصیت

اس ت . اگر می خواهید تعداد true وب، جواب های تغییر جهت از سرور وب را بطور اتوماتیک دنبال کن د ؟ مقدار پی ش فرض آن

را مقدار HttpWebReques از کلاس MaximumAutomaticRedirections تغییر جهت ها را محدود کنی د ، خصوصیت

دلخواه قرار دهید.

اگرچه کلاس های تقاضا و جوا ب ، بیشتر اطلاعات سرآیند را بصورت خصوصیاتی آشکار م ی سازند، ول ی م ی توانید از خود

قرار GetResponse برای دیدن کل کلکسیون سرآیندها استف ا ده کنید .کد زیر را بعد از فراخوانی مت د Headers خصوصیت

قرار دهد. ListBox دهید تا همهی سرآیندها را در کنترل

;("WebRequest wrq = WebRequest.Create("http://www.reuters.com

;()WebResponse wrs = wrq.GetResponse

;WebHeaderCollection whc = wrs.Headers

(++for(int I = 0; I < whc.Count; i

}

mohsen_mahyar@yahoo.com - C# برنامه نویسی

462

;([listBox1.Items.Add("Header " + whc.GetKey(i) + " : " + whc[i

{

2تولید میکند. - این مثال لیست سرآیندها را بصورت شکل 25

2- شکل 25

تصدیق

است . اگر نیاز دارید تصدیق گو اهی با تقاضای WebRequest یکی دیگر از خصوصیات کلاس Credentials خصوصیت

با یک نام کاربر و (System.Net از فضای نامی ) NetworkCredentials شما همراه گرد د ، می توانید یک نمونه از کلا س

قرار دهید. GetResponse رمز آن ایجاد کنید. باید قطعه کد بعدی را قبل از فراخوانی

;("NetworkCredential myCred = new NetworkCredential("myusername", "mypassword

;wrq.Credentials = myCred

-6-1-25 تقاضاهای ناهمگام

توانایی تقاضای صفحات بصورت ناهمگام اس ت . این ویژگی بسیار مهم اس ت ، چون WebRequest یک ویژگی اضافی کلاس

تاخیر ما بین ارسال یک تقاضا به یک میزبان و دریافت جواب آن خیلی طولانی میباشد. متدهایی

تا زمان کامل شدن سرور بر نخوا ه ن د WebRequest.GetResponse و WebClient.DownloadData همچون

گشت(این دستورات بلوک ه ای هستند ). ممکن است نخواهید برنامه کاربرد ی تان تا مدت طولانی ب ی حرکت بماند . در این موارد

بطور BeginGetResponse را بکار بری د . متد ()EndGetResponse و ()BeginGetResponse بهتر است متدهای

ناهمگام کار م ی کند و فوراً اجرای برنامه دنبال م ی شود. در زمان اجرا یک ریسمان پس زمینه برای بازیابی جواب از سرور

یک شی پیاد ه سازی کنند ه ی واسط ، WebResponse ایجاد شده و مدیریت م ی شود. به جای برگرداندن یک شی

بر م ی گرداند. با این واسط م ی توانید نظر سنجی کرده یا منتظر پاسخ بمانید تا جواب در دسترس قرار گیرد IAsyncResult

را برای جمع کردن نتیجه احضار کنید. EndGetResponse و سپس

یک متد با پارامتر ورودی از نوع ارجاع CallBack رد کنی د . نمایندهی BeginGetResponse میتوانید یک نماینده به متد

میپذیرد. زمانی که ریسمان جم ع آوری جواب کارش تمام شود، در زمان اجرا void و مقدار بازگشتی IAsyncResult به

نماینده احضار م ی شود تا شما را از تکمیل کار با خبر ساز د . همانطور که در کد بعدی نشان داده شده اس ت ، فراخوانی

را برای شما ممکن میسازد. WebResponse بازیابی شی CallBack در متد EndGetResponse

()public Form1

}

;()InitializeComponent

;("WebRequest wrq = WebRequest.Create("http://www.reuters.com

;(wrq.BeginGetResponse(new AsyncCallback(OnResponse), wrq

{

(protected void OnResponse(IAsyncResult ar

فصل بیست و پنجم دستیابی به اینترنت

463

}

;WebRequest wrq = (WebRequest)ar.AsyncState

;(WebResponse wrs = wrq.EndGetResponse(ar

... read the response //

{

BeginGetResponse اصلی از طریق رد کردن شی به عنوان پارامتر دوم WebRequest توجه کنید که بازیابی شی

می توانید با CallBack امکان پذیر اس ت . پارامتر سوم یک شی ارجاع با عنوان پارامتر حالت اس ت . در طول اجرای متد

حالت شی را بازیابی کنید. IAsyncResult از IAsyncState استفاده از خصوصیت

HTML -2-25 نمایش خروجی بصورت یک صفحه

گرفتن و پردازش داد ه های اینترنت را آسان م ی سازند. با این وجو د ، تا بحال NET. مثالها نشان دادند چگونه کلا س های پایه ی

Internet را در HTML شما فایلهای گرفته شده را بصورت متن خالی دیدی د . اغلب اوقات م ی خواهید یک فایل

وجود ندار د . نه اینکه ش ما نمی توانی د اینکار را انجام IE مایکروسافت NET. ببینید . متاسفانه در این نسخ ه ی Explorer

را NET. ایجاد کنید و توانای ی های ارتباط داخلی IE از COM می توانستید ارجاعی از یک شی NET. دهید. قب ل از نسخ ه ی 2,0

استفاده کنید. WebBrowser 2,0 میتوانید از کنترل داخلی NET . برای استفاده از امکانات یک کاوشگر بکار گیرید. حال در

در فضای نامی Process را به عنوان یک پردازش شروع کرده و با استفاده از یک کلاس IE میتوانید

یک صفحهی وب را به آن ارسال کنید. System.Diagnostics

;()Process myProcess = new Process

;"myProcess.StartInfo.FileName = "iexplore.exe

;"myProcess.StartInfo.Arguments = "http://www.wrox.com

;()myProcess.Start

را بعنوان پنجر ه ی جداگانه ای شروع م ی کند. برنامه ش ما هیچ ارتباطی با پنجر ه ی جدید ندارد و IE با این وجود کد قبلی

بنابراین نمیتواند آن را کنترل کند.

جدید ، نمایش و کنترل کاوشگر را به عنوان بخشی از برنامه ک  اربردی شما WebBrowser از طرف دیگ ر ، ایجاد یک کنترل

جدید کاملاً پیچیده است و تعداد زیادی متد، خصوصیت و رویداد دارد. WebBrowser ممکن میسازد. کنترل

-1-2-25 کاوشکردن ساده وب از طریق برنامه کاربردی

و یک کنترل TextBox ایجاد کر د ه و روی آن یک کنترل Windows From برای سادگی بیشتر، یک برنامه کاربردی

را در کادر متنی وارد کرده و با فشار دادن کلید URL قرار دهی د . سپس این برنامه را طوری م ی سازید که یک WebBrowser

کار واکشی صفحه وب و نمایش سند خروجی را انجام میدهد. Enter

3 ظاهر میگردد. - 2005 ، برنامه کاربردی شما بصورت شکل 25 VS در محیط طراحی

mohsen_mahyar@yahoo.com - C# برنامه نویسی

464

35- شکل 3

را فشار میدهد( این کلید در برنامه کاربردی ثبت شده Enter را تایپ کرده و کلید URL در این برنا مه زمانی که کاربر یک

صفحه مورد نظر را بازیابی کرده و در خودش نمایش خواهد داد. WebBrowser است)، کنترل

گرفته م ی شود . اگر کارکتر -KeyPress1textBox در این مثال هر کلید فشار داده شده در کادر متنی بوسیله رویداد

صفحهی مورد نظر را بازیابی کرده و در خودش نمایش خواهد داد. WebBrowser باشد، کنترل Enter وارده کلید

کد این برنامه بصورت زیر ارائه میشود.

;using System

;using System.Collections.Generic

;using System.ComponentModel

;using System.Data

;using System.Drawing

;using System.Text

;using System.Windows.Forms

namespace CSharpInternet

}

partial class Form1 : Form

}

()public Form1

}

;()InitializeComponent

{

(private void textBox1_KeyPress(object sender, KeyPressEventArgs e

}

(if (e.KeyChar == (char)13

}

;(webBrowser1.Navigate(textBox1.Text

{

{

{

{

فصل بیست و پنجم دستیابی به اینترنت

465

مشخص کنید . نتیجه ی نهایی در URL را به عنوا ن .Text1textBox خصوصیت WebBrowser کنترل Navigate در متد

4 نمایش داده میشود. - شکل 25

35- شکل 4

IE -2-2-25 شروع نمونههای

شاید برای شما جالب نباشد یک کاوشگر در برنام ه ی کاربردی خود قرار دهی د . اما برای شما جالب اس ت ، به کاربر اجازه دهید

ایجاد کنید که یک کنترل Windows From وب سایت شما در یک کاوشگر متداول بیاید. برای مثال یک برنامه کاربرد

نوشته شده است. "!Visit our company web side" روی آن وجود دارد. روی آن کنترل عبارت LinkLabel

به محض اینکه کنترل را روی فرم قرار د ادید، کد زیر را برای باز کردن سایت وب شرکت خودتان در یک کاوشگر مستقل

بکار برید.

private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs

(e

}

;()WebBrowser wb = new WebBrowser

;(wb.Navigate("http://www.wrox.com", true

{

ایجاد م ی شود. WebBrowser کلیک کند ، یک نمون ه ی جدید از کلاس LinkLabel در این مثال زمانی که کاربر روی کنتر ل

صفحه ی مورد نظر را باز م ی کند. در صورتی که پارامتر دوم این متد WebBrowser.Navigate سپس با استفاده از مت د

است. false باشد، صفحهی وب در پنجره مجزایی باز میشود. بطور پیشفرض این پارامتر true

روی برنامه کاربردی IE -3-2-25 اعمالکردن بیشتر ویژگیهای

مستقیماً روی فرم ق ر ار داشت )، با کلیک بر روی WebBrowser توجه کنید که در هنگام کار با مثال قبلی (مثالی که کنترل

می توانیم این WebBrowser کادر متنی عوض نم ی شود. با استفاده از رویدادهای کنترل URL ، یک پیوند در صفحه نمای ش

تغییر را در برنامه ایجاد کنیم. بطوریکه با کلیک روی هر پیوند، آدرس آن در کادر متنی نمایش داده شود.

را ایجاد DocumentTitleChanged بسیار ساده اس ت . کافی است رویداد HTML بروز کردن عنوان فرم به عنو ان صفحه ی

فرم را تغییر دهید. Text کرده و خصوصیت

mohsen_mahyar@yahoo.com - C# برنامه نویسی

466

(private void webBrowser1_DocumentTitleChanged(object sender, EventArgs e

}

;()this.Text = webBrowser1.DocumentTitle.ToString

{

رخ م ی دهد و DocumenttitleChanged تغییر یاب د ، رویداد WebBrowser در این مث ا ل زمانی که عنوان صفحه در کنترل

کامل صفحه تغییر خواهید دا د . بدین منظور م ی توانید رویداد URL شما کادر متنی روی فرم را بر اساس محتوا ی

را بکار برید. WebBrowser کنترل Navigated

(private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e

}

;()textBox1.Text = webBrowser1.Url.ToString

{

رخ Navigated باز م ی شود ، رویداد WebBrowser در این مثال زمانی که صفح ه ی تقاضا شده بطور کامل در کنترل

صفحه بروز م ی شود. یعنی به محض اینکه یک صفحه در کنترل URL 1با textBox کنترل Text میدهد. در این مثال مقدار

جدید در کادر متنی نمایش داده خواهد ش د . پس اگر کاربر بر URL ، آن تغییر یاب د URL بارگذاری می شود، اگر WebBrowser

صفحهی جدید در کادر متنی نمایش داده خواهد شد. URL ، روی یک پیوند در صفحه نمایش داده شده کلیک کند

حال اگر برنامه کاربردی را با تغییرات قبلی اجرا کنی د . شما نحو ه ی تغییر عنوان فرم و نوار آدرس را همانند نحو ه ی کار

5 را ملاحضه کنید. - خواهید دید. شکل 25 IE

35- شکل 5

را کمی بیشتر کنترل کن د . WebBrowser است، که به کاربر اجازه م ی دهد کنترل IE مرحله بعدی ، ایجاد یک نوار ابزار شبی ه

را بکار خواهید گرفت. Home،Refresh ،Stop ،Forward ،Back یعنی شما دکمههایی همچون

در بالای فرم قرار خوا ه ی د داد . Button قبل از نوار آدر س ، یک مجموعه از کنتر ل های ToolBar به جای استفاده از کنترل

6 اضافه کنید. - همانند شکل 25 TextBox 5 دکمه را در بالای کنترل

فصل بیست و پنجم دستیابی به اینترنت

467

6- شکل 25

ویندوز را IE در این مثال متن روی دکمه برای نشا ن دادن کار دکمه تغییر م ی یابد. البته م ی توانید عکس دکم ه های روی

،buttonBack ،buttonForward گرفته و روی دکمه های خود قرار دهی د . دکمهها را با اسامی

نامگذاری کنید. برای اینکه تغییر اندازهی فرم بطور مناسب کار کن د ، buttonHome،buttonRefresh ،buttonStop

قرار دهید. Top و Right این دکمهها را Anchor خصوصیت

غیرفعال باشند. اگر صفحه اولیه روی buttonStop ،buttonForward ،buttonBack باید در شروع برنامه دکمههای

بارگذاری نش ود، هیچ کاربردی ندارن د . بعداً متنا س ب با محلی که کاربر در پش ت ه صفحه ها قرار دار د ، این WebBrowser کنترل

را فعال Stop دکمهها فعال و غیرفعال خواهد ش د . بنابراین زمانی که بارگذاری یک صفحه شروع م ی شود، لازم است دکم ه

خودش همهی این متدها را دار د . پس WebBrowser کنید و زمانی که بارگذاری تمام ش د ، این دکمه غیرفعال شود. کلاس

مثال زیر کاملاً سرراست است.

;using System

;using System.Collections.Generic

;using System.ComponentModel

;using System.Data

;using System.Drawing

;using System.Windows.Forms

namespace CSharpInternet

}

: Form 1partial class Form

}

()1public Form

}

;()InitializeComponent

{

(_DocumentTitleChanged(object sender, EventArgs e1private void webBrowser

}

;().DocumentTitle.ToString1this.Text = webBrowser

{

mohsen_mahyar@yahoo.com - C# برنامه نویسی

468

(private void textBox1_KeyPress(object sender, KeyPressEventArgs e

}

(13if (e.KeyChar == (char)

}

;(.Text1.Navigate(textBox1webBrowser

{

{

,private void webBrowser1_Navigated(object sender

(WebBrowserNavigatedEventArgs e

}

;().Url.ToString1.Text = webBrowser1textBox

{

(private void Form1_Load(object sender, EventArgs e

}

;buttonBack.Enabled = false

;buttonForward.Enabled = false

;buttonStop.Enabled = false

{

(private void buttonBack_Click(object sender, EventArgs e

}

;()webBrowser1.GoBack

;()textBox1.Text = webBrowser1.Url.ToString

{

(private void buttonForward_Click(object sender, EventArgs e

}

;()webBrowser1.GoForward

;()textBox1.Text = webBrowser1.Url.ToString

{

(private void buttonStop_Click(object sender, EventArgs e

}

;()webBrowser1.Stop

{

(private void buttonHome_Click(object sender, EventArgs e

}

فصل بیست و پنجم دستیابی به اینترنت

469

;()webBrowser1.GoHome

;()textBox1.Text = webBrowser1.Url.ToString

{

(private void buttonRefresh_Click(object sender, EventArgs e

}

;()webBrowser1.Refresh

{

(private void buttonSubmit_Click(object sender, EventArgs e

}

;(webBrowser1.Navigate(textBox1.Text

{

(private void webBrowser1_CanGoBackChanged(object sender, EventArgs e

}

(if (webBrowser1.CanGoBack == true

}

;buttonBack.Enabled = true

{

else

}

;buttonBack.Enabled = false

{

{

(private void webBrowser1_CanGoForwardChanged(object sender, EventArgs e

}

(if (webBrowser1.CanGoForward == true

}

;buttonForward.Enabled = true

{

else

}

;buttonForward.Enabled = false

{

{

,private void webBrowser1_Navigating(object sender

(WebBrowserNavigatingEventArgs e

}

;buttonStop.Enabled = true

mohsen_mahyar@yahoo.com - C# برنامه نویسی

470

{

,private void webBrowser1_DocumentCompleted(object sender

(WebBrowserDocumentCompletedEventArgs e

}

;buttonStop.Enabled = false

{

{

{

فعالیتهای مختلف زیادی در این مثال وجود دار د . چون زمانی که کاربر این برنامه را استفاده م ی کند، گزینه های زیادی وجود

روی فر م ، متد Back وجود دارد . برای مثا ل ، برای دکم ه ی WebBrowser دارد. برای هر عم ل ، یک متد خاص از کلا س

،Stop ،GoForward را بکار برید و برای دکمههای دیگر نیز متدهای متناظر همچون WebBrowser کنترل ()GoBack

مایکروسافت ایجاد کنید تا کار با برنامه راح ت تر IE را استفاده کنی د . بهتر است یک نوار ابزار شبی ه GoHome و Refresh

باشد.

دکمه های مناسب را غیرفعال م ی کند. از اینجا به بع د ، _Load1Form زمانی که فرم برای اولین بار بارگذاری م ی شود، رویداد

کلیک کند تا برنام ه ی کاربردی صفحه دلخواه شما را submit را به کادر متنی وارد کرده و روی دکمه URL کاربر می تواند

بازیابی کند.

برای مدیریت فعال و غیرفعال کردن دکم ه ها، باید یک مجموعه از رو ی دادها را داشته باشی د . همانطور که قبلاً شرح داده شده

فعال م ی شود . بدین منظور یک اداره کننده رویداد برای رویدا د Stop است، با آغاز عمل گرفتن صفح ه ، دکمه ی

فعال را کند. Stop اضافه کنید تا دکمه Navigating

,private void webBrowser1_Navigating(object sender

(WebBrowserNavigatingEventArgs e

}

;buttonStop.Enabled = true

{

غیرفعال گردد . Stop زمانی که بارگذاری سند تمام شود، باید دکمهی

,private void webBrowser1_DocumentCompleted(object sender

(WebBrowserDocumentCompletedEventArgs e

}

;buttonStop.Enabled = false

{

این کار متناسب با توانایی حرکت به جلو و عقب در پش ت ه ،Forward و Back برای فعال و غیرفعال کردن مناسب دکم ه های

حاصل CanGoForwardChanged و CanGoBackChanged صفحهها انجام م ی شود. این عملیات از طریق رویدادهای

میشود.

(private void webBrowser1_CanGoBackChanged(object sender, EventArgs e

}

(.CanGoBack == true1if (webBrowser

فصل بیست و پنجم دستیابی به اینترنت

471

}

;buttonBack.Enabled = true

{

else

}

;buttonBack.Enabled = false

{

{

(private void webBrowser1_CanGoForwardChanged(object sender, EventArgs e

}

(.CanGoForward == true1if (webBrowser

}

;buttonForward.Enabled = true

{

else

}

;buttonForward.Enabled = false

{

{

حالا پروژه را اجرا کرده و یک صفحه وب را بازدید کنید و روی تعدادی پیوند کلیلک کنی د . شم ا باید قادر باشید نوار ابزار را

7 نمایش داده میشود. - جهت توسعه تجربه کاوش بکار برید. محصول نهایی در شکل 25

7- شکل 25

WebBrowser -4-2-25 نمایش مستندات با استفاده از کنترل

فقط برای نمایش صفحات وب محدود نشده اس ت . در حقیقت م ی توانید به کاربر اجازه دهی د ، انواع WebBrowser کنترل

را برای دستیابی به مستنداتی که از طری ق WebBrowser مختلفی از مستندات را ب ب یند. تابحال نحوه استفاده از کنتر ل

به شما اجازه م ی دهد یک مسیر مطلق از فای ل هایی WebBrowser قابل دسترسی هستند دی د هاید. با این وجو د ، کنترل URL

و غیره را بکار برید. PDF و Word ,Excel همچون

برای مثال فرض کنید قطعه کد زیر را بکار میبرید.

mohsen_mahyar@yahoo.com - C# برنامه نویسی

472

webBrowser1.Navigate("C:\\Financial Report.doc");

ظاهر می گردد، بلکه WebBrowser را در برنام ه ی کاربردی شما باز خواهد کر د . نه تنها سند در کنترل Word این دستور سند

8 ملاحضه کنید. - نیز ظاهر خواهد گشت. در شکل 25 Word نوار ابزار

8- شکل 25

را نشان میدهد. Adobe PDF 9 یک فایل - کاوشگر در شکل 25

9- شکل 25

WebBrowser کاربران می توانند اسناد را به روی کنترل ،WebBrowser علاوه بر سادگی بازکردن اسناد خاص در کنترل

باز م ی شود. برای غیرفعال کردن این قابلی ت ، خصوصیت WebBrowser کشیده و رها ک نند، سند بطور اتوماتیک د ر کنترل

قرار دهید. false را WebBrowser کنترل AllowWebBrowser

WebBrowser -5-2-25 چاپکردن بوسیله کنترل

را برای نمایش صفحات و مستندات بکار برن د ، بلکه م ی توانن د آن را برای WebBrowser نه تنها کاربران م ی توانند کنترل

چاپکردن مستندات نیز بکار برند. برای چاپکردن صفحه یا سند مشاهده شده در کنترل دستور زیر را بکار برید.

webBrowser1.Print();

را برای WebBrowser همانند قبل برای چا پ کردن یک صفحه یا سند نیازی نیست آن را بب ی نید. برای مثا ل ، می توانید کلاس

و چاپکردن بکار برید، بدون اینکه سند بارگذاری شده را ببینید. همانند زیر: HTML بارگذاری یک سند

فصل بیست و پنجم دستیابی به اینترنت

473

WebBrowser wb = new WebBrowser();

wb.Navigate("http://www.wrox.com");

wb.Print();

-6-2-25 نمایش کد یک صفحه درخواست شده

را برای گ رفتن یک صفح ه ی دور جهت نمایش کد صفح ه ی تقاضا Stream و WebRequest در شروع این فصل کلا س های

شده بکار بردیم. میتوانید این کد را برای همین کار نیز استفاده کنید.

()public Form1

}

;()InitializeComponent

;()System.Net.WebClient Client = new WebClient

;("Stream strm = Client.OpenRead("http://www.reuters.com

;(StreamReader sr = new StreamReader(strm

;string line

( while ( (line=sr.ReadLine()) != null

}

;(.Items.Add(line1listBox

{

;()strm.Close

بدست آوردن نتایج یکسان ساده اس ت . بر ای مشاهده ی کد صفح ه ی ،WebBrowser حال با توجه به امکانات ک نترل

انجام دهید. Document_Completed موردنظر، میتوانید تغییرات زیر را روی رویداد

,private void webBrowser1_DocumentCompleted(object sender

(WebBrowserDocumentCompletedEventArgs e

}

;buttonStop.Enabled = false

;()textBox2.Text = webBrowser1.DocumentText.ToString

{

قرار دهید . هدف این است زمانی که کاربر یک WebBrowser دیگر در زیر کنتر ل TextBox در داخل برنامه یک کنتر ل

ببینی م . TextBox صفحه را تقاضا م ی کند، نه تنها جنبه بصری صفحه به نمایش در آید، بلک ه کد صفحه را نیز در داخ ل

بدست آورد که کل محتوای صفحه را WebBrowser کنترل DocumentText میتوان کد صفحه ر ا از طریق خصوصیت

برای گرفتن محتویات صفحه DocumentStream بصورت یک رشته بر م ی گرداند. گزینه دیگ ر ، استفاده از خصوصیت

10- دوم برای نمایش کد محتویات صف ح ه را در شکل 25 TextBox است . نتیجه نهایی اضافه کردن Stream بصورت یک

ببینید.

mohsen_mahyar@yahoo.com - C# برنامه نویسی

474

35- شکل 10

Web -3-25 سلسله مراتب کلاسهای

11- م ی اندازیم . شکل 25 WebResponse و WebRequest در این بخش یک نگاه دقی ق تر به معماری اصلی کلا س های

سلسله مراتب ارثبری کلاسهای مورد نظر را ارائه میکند.

11- شکل 25

این سلسله مراتب تعداد کلاسهای بیشتری نسبت به آن دو کلاس استفاده شده در کدهای این فصل دار د . همچنین باید

هر دو انتزاعی هستند و نم ی توان نمونههایی از آنها تعریف کر د . این WebResponse و WebRequest بدانید کلاس های

کلاسهای پایه عملیات کلی رفتار با درخواس ت ها و جوا ب های وب را مستقل از هر نوع پروتکل مورد استفاده فراهم م ی کنند.

و غیره) ایجاد میشوند و یک کلاس مشتق شده برای http, FTP, SMTP ) تقاضاها بوسیلهی پروتکلهای خاصی

ادارهکردن این تقاضاها نوشته شد ه اند. به ____________خاطر دارید که در مثا ل های قبلی متغیرها بصورت ارجاعاتی به کلا س های پایه

به شما م ی داد و متد HttpWebRequest یک شی ()WebRequest.Create تعریف می شوند. با این وجو د ، متد

بر میگرداند. HttpWebResponse در واقع یک شی GetResponse

این مکانیزم مجازی بیشتر جزئیات را از کد سروی س گیرنده پنهان م ی سازد و پشتیبانی از انواع مختلف پروتک ل ها را از ط ر یق

کد پایه یکسانی ممکن میسازد.

با این معماری باید قادر باشی د ، با استفاده از هر پروتکل تقاضاهایی ارسال کنی د . با این وجو د ، در حال حاضر مایکروسافت

NET. در چارچوب 2,0 FTP . فراهم میسازد HTTPS،FTP ،HTTP فقط کلاسهای مشتق شده را برای پوشاندن پروتکلهای

های ویندوز استفاده کنید یا اینکه در انتظار API آمده اس ت. اگر بخواهید این پروتک ل ها را بهینهتر سازید، لازم است از

کلاسهای بهتر بمانید.

فصل بیست و پنجم دستیابی به اینترنت

475

-1 کلاسهای سودمند -3-25

URI و IP این بخش یک مجموعه از کلا س های سودمند را برای ساد ه تر کردن برنام ه نویسی وب در زمان برخورد با آدرسهای

میپوشاند.

ها URI

ایجاد UriBuider . هستن د URI هستند و هر دو برای نمایش یک System دو کلاس از فضای نامی UriBuider و URI

ها را URI تجزیه و ترکیب و مقایسه URI را از طریق رشت ه هایی برای بخ ش های مختلف آن مجاز م ی دارد و کلا س URI یک

کامل لازم دارد. URI یک رشتهی URI ممکن میکند. سازندهی کلاس

Uri MSPage = new

Uri("http://www.Microsoft.com/SomeFolder/SomeFile.htm?Order=true");

به محض اینکه ایجاد ش د ، دیگ ر URI این کلاس تعدادی زیادی خصوصیت فقط خواندنی را در اختیار قرار م ی دهد. یک شی

تغییر داده نمیشود.

;string Query = MSPage.Query; // Order=true

string AbsolutePath = MSPage.AbsolutePath; // SomeFolder/SomeFile.htm

string Scheme = MSPage.Scheme; // http

(int Port = MSPage.Port; // 80 (the default for http

string Host = MSPage.Host; // www.Microsoft.com

bool IsDefaultPort = MSPage.IsDefaultPort; // true since 80 is default

کامل کافی URI تعدادی خصوصیت پیاد ه سازی می کند. این خصوصی ت ها برای ایجاد یک UriBulider از طرف دیگ ر

را برای سازنده فراهم کنید. URI هستند. این خصوصیتها خواندنی- نوشتنی هستند. میتوانید بخشهای

Uri MSPage = new

UriBuilder("http", "www.Microsoft.com", 80, "SomeFolder/SomeFile.htm");

را مشخص کنید. URI یا میتوانید مقادیر خصوصیات

;()UriBuilder MSPage = new UriBuilder

;"MSPage.Scheme ="http

;"MSPage.Host = "www.Microsoft.com

;MSPage.Port = 80

;"MSPage.Path = "SomeFolder/SomeFile.htm

بدست URI متناسب را از طری ق خصوصیت URI کامل ش د ، می توانید شی UriBuider به محض اینکه مقداردهی اولیه

آورید.

Uri CompletedUri = MSPage.Uri;

DNS و اسامی IP -2 آدرسهای -3-25

گفته م ی شود) تشخیص داده میشوند. در کل ، نام میزبان DNS یا نام میزبان (نام IP در روی اینترنت سرورها از طریق آدرس

شناسه ی کامپیوترها IP یک نام بشر دوستانه است که در پنجر ه ی کاوشگر وب تایپ م ی کنید. از طرف دیگ ر ، یک آدر س

شناسههایی هستند که برای تخمین رسیدن درخواس ت ها و IP است که برای شناسایی همدیگر بکار م ی برند. آدرسهای

داشته باشد. IP پاسخهای وب به ماشینهای مناسب استفاده میشوند. امکان دارد یک کامپیوتر بیش از یک

ارسال گردد . کاری که بوسیل ه ی IP برای کار با اسامی میزبا ن ، باید یک تقاضای شبکه جهت ترجم ه ی نام م ی زبان به یک آدرس

را برای همه IP یک جدول نگاشت اسامی میزبان به آدر س های DNS انجام می شود. یک سرور DNS یک یا چند سرور

mohsen_mahyar@yahoo.com - C# برنامه نویسی

476

دیگر را نیز نگه م ی دارد. کامپیوتر محل ی شما DNS سرورها ی IP کامپیوترهایی که م ی شناسد ذخیره م ی کند. همچنین آدر س

را بشناسد. مدیر شبکه در زمان راهاندازی یک سیستم این اطلاعات را پیکربندی میکند. DNS حداقل باید یک سرور

میزبان مورد نظر را از آن می گیرد . IP را م ی پرسد و آدر س DNS قبل از ارسال تقاضا به خار ج ، ابتدا کامپیوتر شما نام سرو ر

م ورد نظر بدست آم د ، کامپیوتر میتواند تقاضای خود را آدرسدهی کرده و آن را روی شبکه ارسال کند . IP زمانی که آدرس

همه این کارها در پشت پرده اتفاق میافتد، در حالیکه کاربر فقط وب را کاوش میکند.

IP برای آدرسهای NET. -3 کلاسهای -3-25

و یافتن اطلاعاتی در مورد کامپیوترهای میزبان فراهم میکند. IP تعدادی کلاس برای جستجوی آدرسهای NET. چارچوب

IPAddress

در دسترس است و شاید از طریق ()GetAddressBytes نشان می دهد. خود آدرس از طریق متد IP این کلاس یک آدرس

نیز پیاد ه سازی م ی کند Parse یک م تد ایستا بنام IPAddress . به حالت دهدهی نقط ه ای تبدیل گرد د ToString() متد

تبدیل میکند. IPAddress را انجام میدهد. یک رشتهی دهدهی نقطهدار را به یک ToString که عکس عمل

IPAddress ipAddress = IPAddress.Parse("234.56.78.9");

byte[] address = ipAddress.GetAddressBytes();

string ipString = ipAddress.ToString();

مقدار ipString انتساب داده شده است و به رشته address در این مثال بای ت های آدرس به ی ک متغیر آرایه بایتی

234,56,78,9 " انتساب داده شده است. "

LoopBack تعدادی فیلد ایستا برای برگرداندن آدر س های خاص فراهم م ی سازد. برای مثا ل ، آدرس های IPAddress کلاس

که اجازه م ی دهد یک پیام به شبک ه ی محلی Broadcast به یک کامپیوتر اجازه م ی دهند به خودش پیام ارسال کند و آدرس

پخش شود.

."127,0,0,1The following line will set loopback to " //

.the loopback address indicates the local host //

;()string loopback = IPAddress.Loopback.ToString

."255,255,255,255The following line will set broadcast address to " //

the broadcast address is used to send a message to all machines on //

.the local network //

;()string broadcast = IPAddress.Broadcast.ToString

IPHostEntry

اطلاعات مرتبط با یک کام پ یوتر میزبان خاص را کپسوله م ی کند. این کلاس نام میزبان را از طریق IPHostEntry کلاس

بر IPAddress یک آرایه از اشیاء AddressList در دسترس قرار م ی دهد و خصوصیت HostName خصوصیت

استفاده خواهد شد.. IPHostEntry کلاس DNSLockupResolver میگرداند. در مثال

پی ش فرض ارتباط برقرار کن د . دو متد ایستای مهم DNS قادر است با سرو ر ،IP جهت بازیابی آدر س های DNS کلاس

برای دستیابی به جزئیات یک میزبان از طریق نام ()Resolve هستند که متد ()GetHostByAddress(), Resolve

آن بر م ی گرداند. هر دو متد یک شی IP جزئیات میزبان را از طری ق GetHostByAddress میزبان به کار م ی رود و متد

بر میگردانند. IPHostEntry

IPHostEntry wroxHost = Dns.Resolve("www.wrox.com");

IPHostEntry wroxHostCopy = Dns.GetHostByAddress("208.215.179.178");

در بر خواهند داشت. wrox.com جزئیاتی در مورد سرورهای IPHostEntry در این کد هر دو شی

فصل بیست و پنجم دستیابی به اینترنت

477

DNS

فرق می کند، چون آن توانایی ارتباط با سرورها جهت بدست آوردن اطلاعات IPHostEntry و IPAddress با DNS کلاس

تعدادی ساختار داد ه ی ساده به همراه خصوصیات مناس ب ، دسترسی به ، IPHostEntry وIPAddress را دارد . برخلاف

دادههای اصلی را ممکن میسازند.

DNSLookup -4 مثال -3-25

12 را ببینید. - ارائه میشوند. شکل 25 DNS برای مراجعه به اسامی IP و مرتبط با DNS در این مثال کلاس های

12- شکل 25

کلیک Resolve را در یک کادر متنی وارد کن د . زمانی که کاربر روی دکم ه ی DNS در این برنامه ی کاربردی کاربر م ی تواند نام

بکار م ی بر د و نام میزبان و IPHostEntry را برای بازیابی یک ارجا ع به ش ی ()Dns.Resolve کند، برنامه متد

آن را نمایش م ی دهد. توجه کنید که ممکن است نام میزبان با آنچه که شما تایپ کرد ه اید متفاوت باش د ، این IP آدرسهای

دیگر عمل کند. DNS به عنوان مستعار برای نام DNS زمانی رخ میدهد که نام

است . کنترل هایی که بر روی فرم هس ت ند، به ترتیب با #c یک برنامه کاربردی تحت ویندوز DNSLookup برنامهی ک اربردی

نامگذاری میشوند. سپس متد زیر را به listBoxIPS و txtBoxHostName و btnResolve ,txtBoxInput اسامی

اضافه کنید. Form به کلاس btnResolve عنوان اداره کننده رویداد کلیک

(void btnResolve_Click (object sender, EventArgs e

}

try

}

;(IPHostEntry iphost = Dns.Resolve(txtBoxInput.Text

(foreach (IPAddress ip in iphost.AddressList

}

;()string ipaddress = ip.AddressFamily.ToString

;(listBoxIPs.Items.Add(ipaddress

;(()listBoxIPs.Items.Add(" " + ip.ToString

{

;txtBoxHostName.Text = iphost.HostName

{

(catch(Exception ex

mohsen_mahyar@yahoo.com - C# برنامه نویسی

478

}

+ " MessageBox.Show("Unable to process the request because

+ "the following problem occurred:\n"

;("ex.Message, "Exception occurred

{

{

نامعتبر تایپ DNS توجه کنید ک ه در این کد هر نوع استثنایی کنترل شده اس ت . یک استثناء زمانی است که کاربر یک نام

کند یا شبکه از کار افتاده باشد.

بکار IP آن را برای بدست آوردن یک آرایه از آدر س های AddressList خصوصیت ،IPHostEntry بعد از بازیابی نمون ه ی

را بصورت یک عدد صحیح و یک رشته نمایش م ی دهد IP طی کنید . هر آدرس foreach برید و سپس آن را در یک حلقه

کمک میگیرد. ()IPAddress.AddressFamily.ToString که از متد

-4-25 خلاصه

System.Net.Socket و System.Net • جالبترین فضاهای نامی برای برنامهنویسی شبکه، فضاهای نامی

کلاسها و عملیات سطح بالا را در بر دارد. System.Net هستند .فضای نامی

کار کنید، کلاسهای سطح پایین را مفید TCP/IP • در صورتی که بخواهید مستقیماً با سوکتها و پروتکلهایی نظیر

خواهید یافت.

وجود دارد. WebClient • برای گرفتن فایلها دو متد در کلاس

یک فایل را از مسیر محلی به یک موقعیت مشخص شده میگذارد. UpLoadFile • متد

خاص ارائه میدهد. URI تقاضای اطلاعات را برای ارسال به یک WebRequest • کلاس

دادههای بازیابی شده از سرور را نشان میدهد. WebResponse . •

خواندن اطلاعات سرآیند را پشتیبانی میکنند. WebResponse و WebRequest • کلاسهای

NetworkCredentials • اگر نیاز دارید تصدیق گواهی با تقاضای شما همراه گردد، میتوانید یک نمونه از کلاس

ایجاد کنید

جدید، نمایش و کنترل کاوشگر را به عنوان بخشی از برنامه کاربردی شما ممکن WebBrowser • ایجاد یک کنترل

میسازد.

فقط برای نمایش صفحات وب محدود نشده است. WebBrowser • کنترل

و چاپکردن بکار برید. HTML را برای بارگذاری یک سند WebBrowser • میتوانید کلاس

را از طریق رشتههایی برای بخشهای مختلف آن مجاز میدارد. URI ایجاد یک UriBuider •

تعدادی فیلد ایستا برای برگرداندن آدرسهای خاص فراهم میسازد. IPAddress • کلاس

اطلاعات مرتبط با یک کامپیوتر میزبان خاص را کپسوله میکند. IPHostEntry • کلاس

mohsen_mahyar@yahoo.com - C# برنامه نویسی

 

   + MOHSEN GHASEMI - ۱٠:۱۳ ‎ق.ظ ; ۱۳۸٩/٥/۱