اختصاصی از
اس فایل دانلودمقاله مفهوم سوکت و پورت و آدرس دانلود با لینک مستقیم و پر سرعت .
اصلی ترین عامل در یک ارتباط شبکه سوکت ( 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() تعداد بایتی اسست که سیستم عامل موفق به ارسال آن شده است . دقت کنید که اگر مقدار برگشتی ( 1-) باشد خطائی بروز کرده که می توانید شماره خطا را در متغیر سراسری error بررسی نمائید . باز هم تکرار می کنیم دلیلی ندارد تعداد بایتی که تقاضا ارسال آنها را داده اید با تعداد بایتی که ارسال شده یکی باشد . بنابراین حتماً مورد را در برنامه خود بررسی کرده و همچنین تقاضای ارسال در هر مرحله را نزدیک یک کیلو بایت درنظر بگیرید .
فرم کلی دریافت داده مبتنی بر سوکتهای دیتاگرام بصورت زیر است :
int recvfrom ( int sockfd , void * buf , int len , unsingned int flags , struct sockaddr * from , int * fromlen ) ;
. sockfd : مشخصه سوکت دیتاگرام که با تابع socket () بوجود آمده است .
فرمت این مقاله به صورت Word و با قابلیت ویرایش میباشد
تعداد صفحات این مقاله 15 صفحه
پس از پرداخت ، میتوانید مقاله را به صورت انلاین دانلود کنید
دانلود با لینک مستقیم
دانلودمقاله مفهوم سوکت و پورت و آدرس