برنامه سازی شبکه با سی شارپ- 4# معرفی کلاس های مربوط به IP در سی شارپ

برنامه سازی شبکه در سی شارپ

در زبان سی شارپ چند کلاس برای کار با آدرس های IP وجود دارد که در این جلسه روش کار آنها را با مثال های برنامه نویسی نشان می دهیم. همچنین با کلاس socket برای ساخت سوکت ها در سی شارپ و پارامترهای آن آشنا می شوید.

کلاس IPAddress

این کلاس در فضای نام System.Net قرار دارد. شی IPAddress برای نمایش یک آدرس IP منحصر بفرد است. این شی دارای متدهای مختلفی است. از جمله مهمترین این متدها متد Parse است.

متد Parse : این متد یک رشته را به یک IPAddress تبدیل می کند.نحوه استفاده از آن بصورت زیر است:

IPAddress ip=IPAddress.Parse(“1921.168.1.1”);

کلاس IPAddress همچنین دارای چند خاصیت فقط خواندنی است که هر کدام برای تعیین IP خاصی استفاده می شوند:

Any : برای نمایش آدرس های ip  در سیستم محلی استفاده می شود.

Broadcast : برای نمایش ip همه پخشی (پخش وسیع) در شبکه محلی استفاده می شود.

Loopback : برای نمایش ip  برگردان ( لوپ بک ) یا محلی استفاده می شود و مقدار آن ۱۲۷٫۰٫۰٫۱ است.

None: هیچ ip برنمی گرداند

کدنویسان- کلاس IPAddess در سی شارپ

مثال زیر روش استفاده از کلاس IPAddress و متدها و خاصیت های آنرا بصورت کامل نشان می دهد:

کدنویسان - کلاس IPAddress در سی شارپکلاس IPHostEntry

از کلاس IPHostEntry در سیشارپ، برای بدست آوردن مشخصات میزبان مورد نظر استفاده می شود . با استفاده ازسه خصوصیت HostName, AddressList و Aliases از کلاس IPHostEntry می توان کلیه اطلاعات DNSی میزبان مورد نظر را مشاهده کرد.

  • با خاصیت HostName از کلاس IPHostEntry می توان به نامی که برای میزبان در DNS ثبت شده است دسترسی داشت.
  • با خاصیت AddressList از کلاس IPHostEntry که خروجی آن آرایه ای از نوع کلاس  IPAddress می باشد، می توان به IP هایی که در DNS برای میزبان ثبت شده است دسترسی داشت.
  • با خاصیت Aliases از کلاس IPHostEntry که خروجی آن یک آرایه رشته ای است، می توان به نام های مستعاری که در DNS برای میزبان مورد نظر ثبت شده است، دسترسی داشت.

مثال: در برنامه زیر با دادن iploopback می توان نام کامپیوتر را بدست آورد:

کدنویسان- کلاس iphostentry در سی شارپ

 

 

کلاس IPEndPoint

کلاس IPEndPoint در سی شارپ  روشی برای تعریف یک گره در شبکه با تلفیق یک IP و یک شماره پورت ارائه می کند. به ترکیب شماره IP  و شماره پورت اصطلاحاً نقطه انتهایی (end point) می گویند. هنگامی که بخواهید سوکتی را به آدرسIP بخصوصی مقید کرده یا بین سوکت یا آدرس IP دیگری ارتباط برقرار کنید، نمونه ای از این شی ایجاد کرده و از آن در فراخوانی ها استفاده می کنید. فرم کلی استفاده از این کلاس به شکل زیر است:

IPEndPoint(IPAddressaddress,intport)

پارامتر اول، نمونه ای از شی و پارامتر دوم شماره پورت اتصال را مشخص می کند. نحوه استفاده از آن در مثال زیر آمده است:

کدنویسان - ایجاد نقطه انتهایی در سی شارپ

در مثال زیر از کلاس های معرفی شده در این جلسه استفاده شده است:

کدنویسان - استفاده از کلاس های ip در سی شارپ

خروجی قطعه برنامه فوق بصورت زیر خواهد بود:

کدنویسان - کار با کلاس های ip در سی شارپ

ساخت سوکت

در این زمینه، فضای نام System.Net.Sockets ،کلاس Socketرا برای استفاده در برنامه های تحت شبکه در اختیار برنامه نویسان قرار داده است. که سازنده کلاس Socket به شکل زیر است:

Socket نام دلخواه = new Socket(AddressFamily …,Socketype …,ProtocolType …)

پارامتراول در فرم فوق، “نوع شبکه” و پارامتر دوم “نوع اتصال” و پارامتر سوم “پروتکل ارتباطی” را تعیین کرده که تمامی پارامترهای این ساختار از نوع شمارشی (عددی) می باشند. باید توجه داشته باشید که به هیچ عنوان اجازه ترکیب پارامترهای دوم و سوم را نداشته و برای هرSocketType، می بایست از یکProtocolType ویژه استفاده کنید. ضمناً فراموش نکنید که برای استفاده ProtocolType با مقدارStream، مقدار ProtocolType را به Tcp تنظیم نمایید.

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

انتخاب نوع سوکت ارتباطی

اساساً سوکت ها را به دو بخش اتصال گرا (Connection-Oriented) و بدون اتصال (Connection-Less)می توان تقسیم بندی کرد.

در سوکت های اتصال گرا مانند TCP، برای مبادله داده ها بین دو ماشین، حتماً باید پیشتر، اتصالی برقرار شده باشد. اما در سوکت های بدون اتصال مانند UDP، نیازی به برقراری اتصال نبوده و در عوض، به ازای هر بار ارسال داده به ماشین دیگر، آدرسIP ماشین مقصد می بایست مشخص شود.

برای IP نرمال باید از مقدار AddressFamily.InterWork استفاده کرد که منظور IP Version 4  میباشد.

پارامترهای سوکت

کدنویسان - پارامترهای تابع سازنده کلاس سوکت در سی شارپ

در این مثال یک سوکت از نوع بدون اتصال ایجاد شده است:

Socket  s= Socket (addressfamily.interNetwork , socketType.dgram, protocoltype.Udp);

و در مثال زیر هم یک سوکت از نوع اتصال گرا ایجاد شده است:

Socket  s= Socket (addressfamily.interNetwork , socketType.Stream, protocoltype.Tcp);

در این جلسه به معرفی و آموزش نحوه استفاده از کلاس های مربوط به IP و کلاس سوکت در سی شارپ پرداختیم ، در جلسات بعدی کلاس ها و برنامه های بیشتری برای کار با کلاس های شبکه در سی شارپ ارائه خواهیم کرد.

برچسب ها

, ,

محصولات پیشنهادی


نظرات کاربران


نظرات برای آموزش برنامه سازی شبکه با C# | ۲ نظر »

  1. Avatar علی گفت:

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

  2. محمدی محمدی گفت:

    سلام ممنونم
    از قطعه کد زیر برای تغییر IP سیستم می تونید استفاده کنید:
    public void setIP(string ip_address, string subnet_mask)
    {
    ListAllNetworkAdapters();

    ManagementClass objMC = new ManagementClass(“Win32_NetworkAdapterConfiguration”);
    ManagementObjectCollection objMOC = objMC.GetInstances();

    foreach (ManagementObject objMO in objMOC)
    {
    if ((bool)objMO[“IPEnabled”])
    {
    try
    {
    ManagementBaseObject setIP;
    ManagementBaseObject newIP =
    objMO.GetMethodParameters(“EnableStatic”);

    newIP[“IPAddress”] = new string[] { ip_address };
    newIP[“SubnetMask”] = new string[] { subnet_mask };

    setIP = objMO.InvokeMethod(“EnableStatic”, newIP, null);
    }
    catch (Exception)
    {
    throw;
    }

    }
    }
    }

کاربر عزیز، لطفاً دیدگاه ارزشمند خود را از طریق فرم زیر برای ما ارسال کنید:

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


تماس با ما
  • شماره همراه : ۰۹۱۵۱۶۰۴۰۶۸
  • آی دی تلگرام : @mmoha94
  • پست الکترونیکی : mohammadi.sm@gmail.com
  • آدرس پستی : بیرجند، خیابان پیروزی، پیروزی ۹، پلاک ۲۸
کلیه حقوق متعلق به سایت کدنویسان است، انتشار و کپی برداری از مطالب این سایت غیرمجاز بوده و پیگرد قانونی دارد.