اصول برنامه نویسی سوکت و شبکه و برنامه چت گروهی

مشخصات فایل

مقطع:کارشناسی
رشته تحصیلی:مهندسی کامپیوتر
نوع ارائه:پایان نامه
تعداد صفحات:132
قالب بندی:word قابل ویرایش

نحوه خرید

دانلود رایگان فایل
شما میتوانید تنها با یک کلید به راحتی فایل مورد نظر را دریافت کنید. 🙂

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

ارتقاء عضویت

در صورت بروز هر گونه مشکل در روند خرید اینترنتی، بخش پشتیبانی کاربران آماده پاسخگویی به مشکلات و سوالات شما می باشد

چکیده

مقدمه

افرادی که از این جزوه برای یاد گیری برنامه نویسی تحت شبکه استفاده می کنند باید با مقدمات زبان C# آشنایی داشته باشند برای این منظور می توانید از کتاب ( آموزش ویژوال C# 2005 گرد آوری شده توسط سید محمد هاشمیان استفاده کنید.( مراجعه به اینترنت)

تمامی کدهای نوشته شده در این جزوه در محیط Visual Studio 2008 نوشته شده است این جزوه از روی کتاب Richard Blum ترجمه شده است.

نکته: بهتر است پس از نوشتن برنامه و اجرای آنها بار دیگر برنامه را Trace کرده و با قرارداد کرسر ماوس بر روی هر متغییر ، شی و … مقادیری را که دریافت می کنند را مشاهده کنید این کار باعث می شود که با عملکرد هر یک از قسمت ها بهتر آشنا شوید.

فصل اول تعریف سوکت ۲

۱-۱- تعریف Socket 3
۱-۱-۲- سوکت(Socket) 3
۱-۱-۳- Port Number 3
۱-۲ برنامه نویسی اتصال گرا ( TCP ) 3
۱-۳ نحوه ی ساختن یک کانکشن مجازی ۱۰
۱-۴ ساختن سوکت (Socket ) 12
۱-۵ برنامه کاربردی Server ، Client 19
۵-۲- توضیح کلی برنامه ۲۱
۱-۶ برنامه های بدون اتصال ( Connectionless Sockets ) 23
۱-۷ پارامترهای SocketOptionLevel 33
۱-۷-۱- تکرار در ارسال داده ها یی که موفق به ارسال نشده اند. ۴۲
۱-۸ مدیریت Errorهای چند گانه ۴۸
۱-۹ Broad Cast چیست؟ ۵۵
۱-۱۰ MultiCast 61
۱-۱۰-۱-RFCچیست؟ ۶۱
۱-۱۰-۳- تکنیک های Multi Cast 62
۱-۱۰-۴- ارسال بسته های MultiCast از طریق Routers 63
۱-۱۰-۵- تعیین مقدار TTL برای MultiCast 66
۱-۱۱ (Simple Mail Transfer Protocol)SMTP 67
۱-۱۲ Microsoft Virtual PC : 67
۱-۱۳ نحوه ی ایجاد کردن شبکه ۶۸
۱-۱۴ ایجاد Mail Server 69
۱-۱۵ برنامه های ارسال Email 71
۱-۱۶ Sockets Helper Classes 85
۱-۱۸ Remoting 96
۱-۱۸-۱- ساختن کلاس Serialized 97

فصل دوم تشریح پروژه ۱۱۱

۲-۱- تشریح پروژه قسمت client 112
۲-۲- سورس کد های فرم client 112
۲-۳- تشریح پروژه قسمت server 118
۲-۴- سورس کد های فرم server 118

فهرست اشکال

شکل ۱-۱- گره های مالتی کست ۶۲
شکل ۱-۲- ایجاد Mail Server 69
شکل ۲-۱- فرم client چت گروهی ۱۱۲
شکل ۲-۲- فرم server چت گروهی ۱۱۸

-۱  تعریف Socket

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

زمانیکه چندین برنامه بر روی یک کامپیوتر فعال می گردند پروتکل TCP/IP می باست از روشی به منظور تمایز یک برنامه از برنامه دیگر استفاده نماید بدین منظور از سوکت برای مشخص نمودن یک برنامه خاص استفاده می گردد.

۱-۱-۲-   سوکت(Socket)

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

در پروتکل TCP برای به رسمیت شناختن پروتکل های مختلفی که بر روی یک ماشین در حال اجرا هستند راه حل زیر ارائه می شود.

۱-۱-۳-   Port Number

هر پروسه ای برای تقاضای برقراری ارتباط با پروسه ای دیگر روی شبکه ، یک شماره شناسایی برای خود بر می گزیند. به این شماره شناسایی آدرس پورت Port Numberگفته می شود (برای درک بهتر این موضوع می توانید به کتاب مرجع کامل ضد امنیت شبکه توسط امیر آشتیانی مراجعه کنید}

۱-۲  برنامه نویسی اتصال گرا ( TCP )

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

دو کلاس در NameSpace (  System. Net ) وجود دارد که دارای نوع هایی مختلف از    Handle های IP  Address می باشد.

  • IP Address
  • IP Endpoint

شی IP  Address  برای نمایش دادن یک IP  Address منفرد می باشد. این شی دارای متد های مختلفی برای نمایش IP  Address می باشد.

سازنده  (Constructor) پیش فرض شی  IP  Address  به صورت زیر می باشد.

(Long address) IP  Address Public

شی IP  Address  دارای متدهای مختلفی به شرح زیر می باشد.

جدول ۱-۲

DESCRIPTION METHOD
دو تا  IP را با هم مقایسه می کند Equals
مقدار درهم شده ای (Hash ) را برای سی IP  Address بر می گرداند. GetHashCode
نمونه ای از یک  IP  Address داخلی را بر می گرداند. GetType
بایتهای IP  Address یک  Host را به بایتهای آدرس یک شبکه تبدیل می کند. HostToNetworkOrder
نشان می دهد که آیا IP  Address مطرح شده یک Loopback آدرس است یا نه Is LoopBack
بایتهای آدرس یک شبکه را به بایتهای یک Host تبدیل می کند.  NetworkToHostOrder
یک رشته را به یک IP  Address تبدیل می کند. Parse
برای نمایش یک IP  Address به یک رشته استفاده می شود. ToString

()Pars متدی است که اغلب در داخل یک IP  Address استفاده می شود.

این غالب به شما اجازه می دهد که فرمت  String را به یک غالب استاندارد با نقطه جدا کننده تبدیل می کند.همچنین کلاس IP Address برای شما چهار فیلد Readonly برای نمایش IPهای خاص ارائه می دهد.

Any : برای نمایش  IP آدرس ها در یک سیتم محلی ( Local ) استفاده می شود( برای تست برنامه می توانید از این استفاده کنید)

Broacadt: برای نمایش یک آی پی Broad Castدر یک سیستم محلی

LoopBack: برای نمایش آدرس  LoopBack  سیستم استفاده می شود(۱۲۷٫۰٫۰٫۱   )

None : برای نمایش ندادن رابطه شبکه در یک سیستم

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

مثال:

using System.Net;

namespace test

{

class Program

{

static void Main(string[] args)

{

IPAddress test1 = IPAddress.Parse(“192.168.0.1”);

IPAddress test2 = IPAddress.Loopback;

IPAddress test3 = IPAddress.Broadcast;

IPAddress test4 = IPAddress.Any;

IPAddress test5 = IPAddress.None;

IPHostEntry ihe =

Dns.GetHostByName(Dns.GetHostName());

IPAddress myself = ihe.AddressList[0];

if (IPAddress.IsLoopback(test2))

Console.WriteLine(“The Loopback address is:{0}”,

test2.ToString());

else

Console.WriteLine(“Error obtaining the loopback address”);

Console.WriteLine(“The local IP address is  :{۰}\n”,

myself.ToString());

if (myself == test2)

Console.WriteLine(“The loopback address is the A same as local

address”, myself.ToString());

else

Console.WriteLine(“loopback address is not  the local address.\n”);

Console.WriteLine(“the test address is :{0}”,

test1.ToString());

Console.WriteLine(“broadcast address:{0}”, test3.ToString());

Console.WriteLine(“the any address is:{0}”, test4.ToString());

Console.WriteLine(“the none address is:{0}”,

test5.ToString());

}

}

}

خروجی برنامه

The Loopback address is:127.0.0.1

The local IP address is  :۱۲۷٫۰٫۰٫۱

loopback address is not  the local address .

the test address is :192.168.1.1

broadcast address:255.255.255.255

the any address is:0.0.0.0

the none address is:255.255.255.255

متدهای  GetHostName و GetHostByName  آی پی یک سیستم محلی را با ساختن یک شی  IPHostEntry معین می کند.

IPHostEntry ( Object ای ) است که دارای جزئیات زیادتری می باشد.

اما برای شروع کافی که خاصیت AddressList را یادبگیرید. AddressList آرایه ای از اشیای IP  Address است، که می توانیم تمامی IP های یک سیستم را در آن ذخیره کنیم.

در Any آدرس ۰٫۰٫۰٫۰٫  نمایش داده شده است. این آدرس بیشتر زمانی استفاده می شود که سیستم شما دارای یک IP نمی باشد و شما می توانید با استفاده از این روش به سیستم خود یک IP  Address Null اختصاص دهید.

None: آدرس آن۲۵۵٫۲۵۵٫۲۵۵٫۲۵۵ می باشد. وقتی استفاده می شود که سوکت شما ساختگی باشد.

IPEndPoint

شی  IPEndPoint  برای نمایش یکIP  وPort ترکیب شده با هم استفاده می شود.

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

دو تا (Constructor) برای ساختن شی  IPEndPoint استفاده می شود.

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

IPEndPoint دارای متدهای زیر می باشد.

جدول ۲-۲

DESCRIPTION METHOD
یک   EndPoint  به شکل یک سوکت آدرس را می سازد Create
دو تا   IPEndPoint  را با هم مقایسه می کند. Equals
مقدار Hash  را برای شی  IPEndPoint بر می گرداند. GetHashCode
یک نمونه ای از     IPEndPoint را بر می گرداند. GetType
یک نمونه سوکت آدرس از نوع  IPEndPoint  را می سازد که حاوی اطلاعاتی راجع  IPEndPoint می باشد. Serialize
IPEndPoint    را به یک رشته برای نمایش تبدیل می کند ToString

کلاس SocketAddress کلاس خاصی است که در داخل  System.net; NameSpace وجود دارد.

آن برای نمایش یک نسخه  از serialized در شی IPEndPoint  می باشد.

فرمت کلاس SocketAddress  به شکل زیر می باشد.

۱ بایت برای نمایش AddressFamily

۱ بایت برای نمایش اندازه اشیا

۲ بایت برای نمایش شماره پورت اشیا

بایت های باقیمانده هم برای نمایش IP آدرس یک سیستم است.

شما می توانید خصوصیات داخلی IPEndPoint را به شکل زیر تنظیم کنید.

Address : خصوصیات یک IP را تنظیم (Set ) و با دریافت  (Get ) می کند.

AddressFamily : نام IP  آدرس را می گیرد.

Port : شماره پورت  TCP یا UDP را تنظیم می کند.

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

IPو Port جز خصوصیات اختصاصی و داخلی در شی  IPEndPoint  به حساب می آیند

IPEndPoint دارای دو متد  Readonly می باشد که شامل

MaxPort: بیشترین مقداری که می توان برای یک پورت تعیین کرد.

MinPort : کمترین مقداری که می توان برای یک پورت تعیین کرد.

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

IPAddress test = IPAddress.Parse(“192.168.1.1”);

IPEndPoint ie = new IPEndPoint(test, 8000);

Console.WriteLine(“the IPEndPoint is : {0}”, ie.ToString());

Console.WriteLine(“the Address Family is :{0}”,

ie.AddressFamily);

Console.WriteLine(“the address is: {0}, And the A port is

:{۱}\n”, ie.Address, ie.Port);

Console.WriteLine(“the min port number is :{0}”,

IPEndPoint.MinPort);

Console.WriteLine(“the max port number is :

{۰}”,IPEndPoint.MaxPort);

ie.Port = 80;

Console.WriteLine(“The change IPEndPoint value a is:{0}”,

ie.ToString());

SocketAddress sa = ie.Serialize();

Console.WriteLine(“the socket address is:{0}”, sa.ToString())

خروجی برنامه به صورت زیر می باشد

The  IPEndPoint is : 192.168.1.:8000

The  AddressFamily is: Inter Network

The address is: 1920168.1.1, And the A Port is: 8000

The min port number is: o

The Max port number is : 65535

The change IPEndPoint Value a is: 192.168.1.1:80

The sock address is: InterNetwork:16:{0,80,192,168,1,1,0,0,0,0,0,0,0,0}

Press any key to continue…

این برنامه همچنین به شما اجازه می دهد بدون آنکه یک شی جدید بسازید مقدار پورت را تغییر دهید. Ie.port=80:

{ مثال : با توجه به دستوراتی که یاد گرفته اید می خواهیم با دادن آی پی LoopBack  به برنامه نام کامپیوتر را بدست آوریم .

using System.Net;

namespace test2

{     class Program

{

static void Main(string[] args)

{

IPHostEntry iphost = Dns.GetHostEntry(“127.0.0.1”);

string hostname = iphost.HostName;

Console.WriteLine(hostname);

}

}

}}

خروجی این دستور بستگی به این دارد که نام  کامپیوتر شما چه باشد در اینجا خروجی برابر Media نام کامپیوتری که برنامه را در آن اجرا کرده ام . همچنین برای پی بردن به صحت موضوع کافیه که در Run عبارت CMD را تایپ کرده و در پنجره باز شده عبارت  Hostnameرا تایپ کرده و کلید Enterرا فشار دهید تا نام کامپیوتر را مشاهده کنید. البته می توانید با ساخت یک  Local Area Connection یا همان کانکشن مجازی به سیستم خود یک  IP مثلا ۱۹۲٫۱۶۸٫۰٫۱   اختصاص داده و با استفاده از این IP  برنامه خود را تست کنید.}

نحوه خرید

دانلود رایگان فایل
شما میتوانید تنها با یک کلید به راحتی فایل مورد نظر را دریافت کنید. 🙂

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

ارتقاء عضویت

در صورت بروز هر گونه مشکل در روند خرید اینترنتی، بخش پشتیبانی کاربران آماده پاسخگویی به مشکلات و سوالات شما می باشد

راهنمای سایت

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

تمام مطالب سایت فقط برای اعضای سایت رایگان است.

نحوه عضویت در سایت

آخرین مطالب

مطالب مرتبط