
حالا شما به عنوان برنامهنویس نیاز دارید با طراحی و توسعه یک برنامه به کاربران کمک کنید تا بتوانند براحتی اطلاعات خود را انتقال بدهند یا اینکه با دریافت اطلاعات از یک سختافزار که وظیفه تامین دادههای شما را به عهده دارد، به بررسی اطلاعات بپردازد.
در این شماره قصد داریم در مورد توسعه یک برنامه در شبکهای محلی با استفاده از 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 و انتقال صوت و تصویر در شبکه استفاده میشود.
امیر بهاءالدین سبطالشیخ
در یادداشتی اختصاصی برای جام جم آنلاین مطرح شد
در یادداشتی اختصاصی برای جام جم آنلاین مطرح شد
عضو دفتر حفظ و نشر آثار رهبر انقلاب در گفتگو با جام جم آنلاین مطرح کرد
بهتاش فریبا در گفتوگو با «جامجم آنلاین»:
رئیس جمعیت هلالاحمر در گفتوگو با «جامجم» تشریح کرد