مقاله در مورد مفهوم سوکت و پورت و آدرس


در حال بارگذاری
23 اکتبر 2022
فایل ورد و پاورپوینت
2120
2 بازدید
۷۹,۷۰۰ تومان
خرید

توجه : به همراه فایل word این محصول فایل پاورپوینت (PowerPoint) و اسلاید های آن به صورت هدیه ارائه خواهد شد

 مقاله در مورد مفهوم سوکت و پورت و آدرس دارای ۲۰ صفحه می باشد و دارای تنظیمات در microsoft word می باشد و آماده پرینت یا چاپ است

فایل ورد مقاله در مورد مفهوم سوکت و پورت و آدرس  کاملا فرمت بندی و تنظیم شده در استاندارد دانشگاه  و مراکز دولتی می باشد.

توجه : در صورت  مشاهده  بهم ریختگی احتمالی در متون زیر ،دلیل ان کپی کردن این مطالب از داخل فایل ورد می باشد و در فایل اصلی مقاله در مورد مفهوم سوکت و پورت و آدرس،به هیچ وجه بهم ریختگی وجود ندارد


بخشی از متن مقاله در مورد مفهوم سوکت و پورت و آدرس :

مفهوم سوکت و پورت و آدرس

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

در عصر ویندوز X/3 ، که هنوز کارکردهای شبکه جزء ذاتی سیستم عامل نشده بود ، شرکت های زیادی پروتکل های لازم برای ارتباطات شبکه را عرضه می کردند ، که تفاوتهایی با یکدیگر داشتند . در نتیجه هر شرکت باید مجموعه ای کامل از نرم افزارهای شبکه را ارائه می کرد . این وضع خوشایند اکثر برنامه نویسان نبود . بنابراین تمام شرکتهایی که این زمینه کار می کردند ( از جمله میکروسافت ) تصمیم گرفتند یک مجموعه ای توابع برنامه نویسی ( API ) برای سوکت های ویندوز ( Winsock ) داشته باشند . بدین ترتیب تمام برنامه نویسان می توانستند از یک سری توابع سازگار برای انجام ارتباطات شبکه استفاده کنند .

برای کار با فایل به یک شیء Cfile نیاز داریم . پیام های شبکه هم وضع مشابهی دارند چون برای خواندن / نوشتن آنها به یک سوکت نیاز هست ، با این تفاوت که باز کردن یک سوکت نیاز به اطلاعات متفاوتی دارد . برای باز کردن یک فایل باید نام و مسیر آن را بدانیم . برای باز کردن یک سوکت باید نام کامپیوتری که گوش بزنگ است و پورتی ( Port ) که به آن گوش می دهد را بدانیم . در واقع نام کامپیوتر معادل شماره تلفن و پورت معادل شماره داخلی مورد نظر است . پورت ها برای تغییر مسیر ارتباطات شبکه هستند . به شکل زیر نگاه کنید .

شکل : پورت ارتباط شبکه را به مسیر درست هدایت می کند .
برای ارتباط با یک برنامه دیگر شبکه باید پورت آن را هم بدانید . اگر آدرس کامپیوتر و پورت را اشتباه کنید ممکنست به برنامه دیگری وصل شوید ، یا اینکه اصلاً به جایی وصل نشوید ( درست مثل گرفتن یک شماره تلفن عوضی ) .

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

انواع سوکت و مفاهیم آنها
اگر بخواهیم از نظر اهمیت انواع سوکت را معرفی کنیم دو نوع سوکت بیشتر وجود ندارد . ( انواع دیگری هم هستند ولی کم اهمیت ترند ) . این دو نوع سوکت عبارتند از :
. سوکتهای نوع استریم که سوکتهای اتصال گرا نامیده می شود .
. سوکتهای نوع دیتاگرام که سوکتهای بدون اتصال نامیده می شود .
اگر عادت به پیش داوری دارید برای تمایز بین مفهوم این دو نوع سوکت . تفاوت

بین مفاهیم ارتباط نوع TCP و UDP را مدنظر قرار بدهید . روش ارسال برای سوکتهای نوع استریم همان روش TCP است و بنابراین داده ها با رعایت ترتیب و مطمئن با نظارت کافی بر خطاهای احتمالی مبادله می شوند . سوکتها نوع دیتاگرام نامطمئن است و هیچگونه تضمینی در ترتیب جریان داده ها وجود ندارد .
اکثر خدمات و پروتکلهائی که در لایه چهارم تعریف شده اند نیازمند حفظ اعتبار و صحت داده ها و همچنین رعایت ترتیب جریان داده ها هستند . بعنوان مثال پروتکل انتقال فایل ( FTP ) ، پروتکل انتقال صفحات ابرمتن ( HTTP ) یا پروتکل انتقال نامه های الکترونیکی ( SMTP ) ه

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

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

ارسال و دریافت به روش UDP با سوکتهای دیتاگرام
توابع ارسال ، دریافت و پذیرش برای سوکتهای نوع استریم کاربرد دارد . حال باید دید که به چه صورت می توان ارسال و دریافت را به روش UDP روی سوکتهای نوع دیتاگرام انجام داد .
. برنامه سمت سرویس دهنده
الف ) یک سوکت از نوع دیتاگرام ایجاد کنید . این کار با فراخوانی تابع socket() با پارامتر

SOCK – DGRAM انجام می شود .
ب ) به سوکت ایجاد شده آدرس پورت موردنظرتان را نسبت بدهید . ( با تابع bind() ) .
ج ) بدون هیچ کار اضافی می توانید منتظر دریافت داده ها بشوید . ( تا موقعی که داده ای دریافت نشود ارسال معنی نمی دهد . ) وقتی داده ای دریافت و پردازش شد آدرس برنامه مبدا ( آدرس IP و پورت ) مشخص شده و ارسال امکان پذیر خواهد بود .
ارسال و دریافت وی سوکتهای نوع دیتاگرام بوسیله توابع recvform() و sendto() انجام می شود .
د ) نهایتاً سوکت ایجاد شده را ببندید .
. برنامه سمت مشتری
الف ) یک سوکت از نوع دیتاگرام ایجاد کنید . ( با تابعsocket() و پارامتر SOCK-DGRAM ) .
ب ) هرگاه نیاز شد بدون هیچ کار اضافی داده هایتان را به سمت سرویس دهنده ارسال نمایید . تا وقتی که به سمت سرویس دهنده ارسال نداشته باشید ، دریافت داده ها معنا نمی دهد چرا که شما برای سرویس دهنده شناخته شده نیستید مگر اینکه داده ای را ارسال نمائید . ارسال و دریافت را تا زمانی که نیاز است انجام بدهید .
ج ) سوکت ایجاد شده را ببندید .
فرم کلی تابع ارسال داده مبتنی بر سوکتهای دیتاگرام بصورت زیر است :

int sendto ( int sockfd , const void * msg , int len , unsigned int flags , const struct sockaddr * to , int tolen ) ;
. sockfd : مشخصه سوکت دیتاگرام که با تابع socket() بوجود آمده است .
. msg : آدرس محل قرار گرفتن پیام در حافظه که داده های ارسالی بایستی از آنجا استخراج شده و درون یک بسته UDP و درون یک بسته UDP قرار گرفته و ارسال شود .

. len : طول پیام ارسالی بر حسب بایت .
. to : استراکچری از نوع sockaddr که قبلاً ساختار آنرا مشخص کردیم . در این استراکچر باید آدرس IP مربوط به ماشین مقصد و همچنین شماره پورت سرویس دهنده تنظیم شود.
. tolen : طول استراکچر sockaddr است که به سادگی می توانید آنرا به مقدار ) sizeof struct sockaddr تنظیم نمایید .مقدار برگشتی این تابع همانند تابع send() تعداد بایتی اسست که سیستم عامل موفق به ارسال آن شده است . دقت کنید که اگر مقدار برگشتی ( ۱-) باشد خطائی بروز کرده که می توانید شماره خطا را در متغیر سراسری error بررسی نمائید . باز هم تکرار می کنیم دلیلی ندارد تعداد بایتی که تقاضا ارسال آنها را داده اید با تعداد بایتی که ارس

ال شده یکی باشد . بنابراین حتماً مورد را در برنامه خود بررسی کرده و همچنین تقاضای ارسال در هر مرحله را نزدیک یک کیلو بایت درنظر بگیرید .
فرم کلی دریافت داده مبتنی بر سوکتهای دیتاگرام بصورت زیر است :
int recvfrom ( int sockfd , void * buf , int len , unsingned int flags , struct sockaddr * from , int * fromlen ) ;

. sockfd : مشخصه سوکت دیتاگرام که با تابع socket () بوجود آمده است .
. buf : آدرس محلی از حافظه که سیستم عامل داده های دریافتی را در آن محل قرار خواهند داد .
. len : طول پیام که باید دریافت شود ( برحسب بایت ) .
. from : استراکچری است از نوع sockaddr که سیستم عامل آنرا با مشخصات آدرس IP و آدرس پورت برنامه مبدأ تنظیم و به برنامه شما بر می گرداند .
. len : طول استراکچری است که سیستم عامل آنرا برگردانده است .
مقدار برگشتی این تابع نیز تعداد بایتی است که دریافت شده است . این پارامتر برای پردازش

داده های دریافتی اهمیت حیاتی دارد .

ایجاد یک سوکت
اضافه کردن قابلیت های شبکه به برنامه های Visual C++ با استفاده از کلاس های MFC Winsock نسبتاً ساده است و کلاس مبنا ، CasyncSocket ، یک ارتباط سوکت کاملو رویداد

گرا ( event – driven ) ارایه می کند . کلاس هایی که از این کلاس مشتق می شوند می توانند رویداده را به دام انداخته و نسبت به آنها عکس العمل نشان دهند .

اولین کاری که برای ساختن یک سوکت در برنامه باید انجام دهید تعریف یک متغیر از نوع CasyncSocket در کلاس اصلی برنامه است :
class CMYDlg : public Cdialog
{
.
.
.
private :

Casyncsocket m- sMysocket ;
} ;
بستن کانال ارتباطی
بعد از آنکه برنامه کارش را به پایان رساند ، باید کانال ارتباطی را با متد close ببندد . این متد هیچ آرگومانی نمی گیرد :
m- sMysocket. Close ( ) ;

رویدادهای سوکت
یکی از دلایل اصلی مشتق کردن از کلاس CasyncSocket امکان نوشتن تابع برای رویدادهای سوکت است . کلاس CasyncSocket برای هر رویداد تابعی را فراخوانی می کند . این توابع فقط در نام اختلاف دارند . تمام این توابع به صورت protected تعریف شده اند و احتمالاً شما هم باید توابع خود را چنین تعریف کنید . تمام این توابع یک پارامتر از نوع int می گیرند که آن را چک می کنند تا مطمئن شوند خطایی روی نداده است . جدول زیر توابع رویدادهای کلاس سوکت را نشان می دهد .
تابع مفهوم
OnAccept این تابع ( در سوکت گوش دهنده ) می گوید که یک ارتباط در انتظار پذیرفته شدن بسر می برد.
OnClose این تابع می گوید که طرف مقابل سوکت خود رابسته است ، پاسخ این رویداد معمولاً بستن سوکت خودی است .
OnConnect این تابع می گوید که کانال ارتباطی با طرف مقابل یرقرار شده و اینک می توان پیام رد وبدل کرد .
ONReceive این تابع می گوید که مقداری داده از سوکت مقابل رسیده و آماده دریافت است .
OnSend این تابع می گوید که سوکت آماده ارسال داده است . این تابع بلافاصله بعد از برقراری ارتباط فراخوانی خواهد شد . هر بار که برنامه اجرا کننده متد s end بخواهد داده بیشتری ارسال کند ، باز هم این تابع فراخوانی می شود ؛ یعنی ارسال بافر پایان یافته و برنامه می تواند ادامه پیام را ارسال کند .

قبل از آنکه وارد مقوله برنامه نویسی سوکت بشویم بد نیست الگوریتم کل کاری که بایستی در سمت سرویس دهنده و همچنین در سمت مشتری انجام بشود ، بررسی نمائیم :

  راهنمای خرید:
  • در صورتی که به هر دلیلی موفق به دانلود فایل مورد نظر نشدید با ما تماس بگیرید.