برنامه‌نويسي شبكه در NET.(بخش اول) NET. و شبكه

 

اهميت استفاده از شبكه‌هاي رايانه‌اي روزبه‌روز بيشتر شده و به عنوان جزء ثابتي در يك شركت و حتي يك ارگان بزرگ تبديل شده است. اهميت آن وقتي مشخص مي‌شود كه نياز به اشتراك‌گذاري منابع، فايل‌ها و... هميشه راهكار اساسي براي حل بعضي مشكلات و كم‌شدن رفت و آمد افراد يك سازمان براي جابه‌جايي فايل‌ها و اسنادشان است. در وهله بعدي بحث امنيتي و نگهداري داده‌هاست كه اهميت استفاده از شبكه‌هاي رايانه‌اي را بيشتر مي‌كند.حالا شما به عنوان برنامه‌نويس نياز داريد با طراحي و توسعه يك برنامه به كاربران كمك كنيد تا بتوانند براحتي اطلاعات خود را انتقال بدهند يا اين‌كه با دريافت اطلاعات از يك سخت‌افزار كه وظيفه تامين داده‌هاي شما را به عهده دارد، به بررسي اطلاعات بپردازد.در اين شماره قصد داريم در مورد توسعه يك برنامه در شبكه‌اي محلي با استفاده از Socket بحث كنيم و اين‌كه برنامه‌ مورد نظر چگونه مي‌تواند اطلاعاتي را براي يك رايانه ديگر در شبكه ارسال يا دريافت كند و چه روش‌هايي براي ارسال اطلاعات وجود دارد و كدام يك با توجه به شرايط، نتيجه بهتري خواهد داشت.

Socket‌چيست؟

سوكت نقطه‌اي نهايي براي برقراري يك ارتباط دو طرفه بين دو رايانه است كه در يك شبكه رايانه‌اي اجرا مي‌شود. برنامه‌هايي كه در يك شبكه دو طرفه به جابه‌جايي اطلاعات مي‌پردازد از يك سوكت استفاده مي‌كند. براي اين‌كه دو رايانه با هم ارتباط برقرار كنند نياز به يك آدرس IP دارند كه مشخص‌كننده هويت يك رايانه در شبكه است. علاوه بر اين به يك پورت كه يك عدد صحيح يكتاست نياز داريم كه مشخص مي‌كند يك برنامه از چه درگاهي اطلاعات را به دستگاه ديگر منتقل مي‌كند. اين درگاه مادامي كه يك برنامه در حال انتقال اطلاعات از طريق شبكه است، قابل دسترس توسط برنامه‌هاي ديگر نيست.

برخي از درگاه‌هاي اصلي و پروتكل مورد استفاده آنها به صورت زير است:

HTTP: 80

Telnet: 23

SMTP: 25

SNPP: 444

DNS: 53

FTP(Data): 20

FTP(Control): 21

براي انتقال اطلاعات در يك شبكه دو حالت وجود دارد كهNET. هر دو روش را به صورت كامل پشتيباني مي‌كند. حالت اول Synchronous و Asynchronous است كه وقتي برنامه‌اي داده‌اي را ارسال مي‌كند بايد منتظر بماند تا داده‌‌اي از سيستم مقابل پاسخ داده شود. البته برنامه به طور همزمان هيچ كار ديگري نمي‌تواند انجام دهد. ‌اما در حالت دوم برنامه به كار عادي خود ادامه مي‌دهد و هر وقت به اطلاعات از سيستم ديگر پاسخ داده شد، آنها را پردازش مي‌كند.تفاوت روش‌هـــــاي Synchronous و Asynchronous را در مورد چند پردازشي درNET. ‌توضيح داده‌ايم.دو «فضاي نام» براي اين كار در NET. وجود دارد؛ يكي System.NET و ديگري System.NET.Sockets ، فضاي نام اول براي به دست آوردن مشخصات شبكه‌اي يك رايانه مثل IP و حتي DNS () به كار مي‌رود.براي آشنايي بيشتر با اين «فضاي نام» به كد زير دقت كنيد كه آدرس IP يك سايت را با استفاده از DNS آن به شما مي‌دهد:

IPHostEntry IPHost = Dns.GetHostEntry("www.hotmail.com");

IPAddress[]ipAddress = IPHost.AddressList;

StringBuilder strIpAddress = new StringBuilder();

for (int i = 0; i « ipAddress.Length; i++)

strIpAddress.Append(ipAddress[i].ToString());

Console.WriteLine("The IP Address is: " + strIpAddress.ToString());

ابتدا از طريق Dns.GetHostEntry مشخصات يك ميزبان را به IPHostEntry وارد مي‌كنيم، سپس از طريق اين شيء و با استفاده از ويژگي AddressList آن مي‌توان به تمامي آدرس‌هاي IP موجود دسترسي پيدا كنيم.قبل از اين‌كه سراغ برنامه‌نويسي يك برنامه Client و Server برويم، ابتدا دوتا از پروتكل‌هاي مهم شبكه را مورد بررسي قرار مي‌دهيم.اگر مطالعاتي در مورد شبكه داشته ‌باشيد حتي با دو پروتكل TCP و UDP آشنا هستيد. اينجا مروري در مورد اين دو خواهيم داشت.پروتكل TCP انتقال اطلاعات از طريق يك قانون ارتباط گرا (Connection Orient) است. اين به معناي آن است كه وقتي يك بسته اطلاعاتي ارسال مي‌شود، سيستم ارسال كننده بايد منتظر پاسخ باشد. اگر ارتباط قطع شود و بسته ارسال شده ‌باشد، سيستم عدم ارسال بسته را اعلام مي‌دهد. هر چند بسته اطلاعاتي در سيستم مقصد دريافت شده ‌باشد، اما سيستم ارسال‌كننده به سبب اين‌كه پاسخي مبني بر دريافت بسته نداشته، بسته را در برقراري دوباره اتصال ارسال مي‌كند. اين كار باعث كندي كارها مي‌شود و كاربرد آن زماني است كه اهميت ارسال اطلاعات مهم باشد.در پروتكل UDP، انتقال اطلاعات بدون دريافت پاسخ انجام مي‌شود و اطلاعات مشخصا در شبكه انتقال پيدا مي‌كند و اين‌كه سيستم طرف پاسخ دهد كه اطلاعات را دريافت كرده يا خير، اصلا مهم نيست. از اين پروتكل براي Streaming و انتقال صوت و تصوير در شبكه استفاده مي‌شود.





تاريخ : سه شنبه 17 مرداد 1391برچسب:, | | نویسنده : مقدم |