Loading…

جزیره برنامه نویسی و توسعه نرم افزار

ارسال کننده: حسین احمدی
حسین احمدی ، بنیانگذار TOSINSO ، توسعه دهنده وب و برنامه نویس ، بیش از 12 سال سابقه فعالیت حرفه ای در سطح کلان ، مشاور ، مدیر پروژه و مدرس نهادهای مالی و اعتباری ، تخصص در پلتفرم دات نت و زبان سی شارپ ، طراحی و توسعه وب ، امنیت نرم افزار ، تحلیل سیستم های اطلاعاتی و داده کاوی ...
ارسال پیام خصوصی
امتیازات این مطلب
نکته: برنامه نویسی شبکه (Network Programming) در سی شارپ :: کار با آدرس های IP و Dns
در محیط اینترنت و شبکه تمامی سرور ها و همچنین کلاینت به وسیله آدرسی به نام IP شناخته می شوند. در کنار IP یک نام دیگر نیز استفاده می شود که به آن Host Name یا Domain Name گفته می شود و هر Host Name به یک آدرس IP اشاره می کند. ارتباط HostName یا Domain Name را با IP مثل یک دفترچه تلفن می توان در نظر گرفت که نام هر شخص یک شماره تلفن مختص به خود را دارد و از روی نام شخص می توان شماره تماس آن شخص را پیدا کرد، Domain Name هم به همین صورت است و بوسیله نام Domain می توان آدرس IP یک سرور یا کلاینت را در محیط اینترنت یا شبکه پیدا کرد. مکانیزمی که بوسیله آن بر اساس نام Domain یا Host آدرس IP یک سیستم را مشخص می کنند DNS یا Domain Name System نام دارد. در این مطلب قصد داریم تا با کلاس هایی آشنا شویم که در زبان سی شارپ برای کار با آدرس های IP و DNS ها استفاده می شوند. آدرس IP در حال حاضر بر دو نسخه ارائه شده، نسخه 4 یا IPv4 و نسخه 6 یا IPv6. نسخه 4 یک مقدار 32 بیتی است و نسخه 6 یک مقدار 64 بیتی و مشخص است که بوسیله نسخه 6 می توان تعداد بیشتری سرور و کلاینت را در محیط اینترنت و شبکه آدرس دهی کرد.

در دات نت چندین کلاس وجود دارد که بوسیله آن ها می توان با آدرس های IP و Dns کار کرد. یکی از این کلاس ها IPAddress است که در فضای نام System.Net قرار دارد و نشان دهنده یک آدرس IP است. بوسیله این کلاس امکان Parse کردن یک آدرس IP از یک رشته، گرفتن IP در قالب آرایه ای از Byte و همچنین نمایش IP به صورت رشته را خواهیم داشت. در مثال زیر نحوه کار با این کلاس را میبینیم:

var ipAddress = IPAddress.Parse("192.168.1.120");
var ipBytes = ipAddress.GetAddressBytes();
Console.WriteLine(ipAddress.ToString()); // 192.168.1.120

کلاس IPAddress یکسری اعضای static دارد که می توان از آن ها برای برخی کارها استفاده کرد، برای مثال، فیلد Loopback آدرسی که بوسیله آن می توان به سیستمی برنامه بر روی آن در حال اجرا است پیامی ارسال کرد و فیلد Broadcast امکان ارسال پیام ها را به صورت گروهی در محیط شبکه می دهد:

Console.WriteLine(IPAddress.Loopback); // 127.0.0.1
Console.WriteLine(IPAddress.Broadcast); // 255.255.255.255

کلاس دیگری در فضای نام System.Net وجود دارد به نام IPHostEntry که اطلاعات یک Host را برای ما نگهداری می کند. اما قبل از اینکه از این کلاس استفاده کنیم با کلاسی آشنا می شویم به نام Dns، این کلاس یک متد استاتیک با نام GetHostEntry دارد که آدرس یک Host را گرفته و اطلاعات مربوط به به آن Host را در قالب IPHostEntry برای ما بر میگرداند (متد قدیمی برای اینکار Resolve بود که در نسخه های جدید با متد GetHostEntry جایگزین شده است):

IPHostEntry entry = Dns.GetHostEntry("itpro.ir");
Console.WriteLine(entry.HostName);
foreach(var ipAddress in entry.AddressList)
{
    Console.WriteLine(ipAddress);
}

با اجرای کد بالا خروجی زیر را دریافت خواهیم کرد:

itpro.ir
185.8.173.236

کلاس IPHostEntry خصوصیتی دارد با نام AddressList که لیستی از Address های IP مربوط به Host مشخص شده را برای ما بر میگرداند که در نمونه کد بالا بوسیله دستور foreach آدرس های مورد نظر را در خروجی چاپ کردیم.

اگر بخواهیم اطلاعات یک Host را بر اساس آدرس IP به دست بیاوریم کافیست به جای نام Host آدرس IP را به صورت زیر مشخص کنیم:

var entry = Dns.GetHostEntry(IPAddress.Parse("185.8.173.236"));
Console.WriteLine(entry.HostName);

کلاس IPAddress زمانی که قصد استفاده از Socket ها در سی شارپ را داشته باشیم کاربرد دارد.

نویسنده: حسین احمدی
منبع: ITpro
دیدگاه ها

هیچ دیدگاهی برای این مطلب ارسال نشده است

برای ارسال نظر وارد شوید.