برنامه نویسی سوکت چیست ؟
پنجشنبه, ۱۶ بهمن ۱۳۹۳، ۰۹:۴۵ ب.ظ
شاید برای بسیاری از افرادی که به تازگی با برنامه نویسی آشنا شده باشند ، این سوال پیش بیاید که برنامه نویسی سوکت چیست و به چه معناست ؟ در ادامه بطور واضح مطالبی درباره برنامه نویسی سوکت خواهید دید .
برنامه هایی که نوشته می شوند ، اغلب نیازمند این هستند که با اینترنت ارتباط برقرار کنند و اطلاعاتی دریافت یا ارسال کنند . اما با چه کسی ؟
سرورها ، کامپیوتر هایی که خدماتی به شما ارائه میدهند ، به عنوان کامپیوتری که حاوی صفحات php,asp,python, دیتابیس ها و غیره هستند اطلاعات مورد نیاز شما را باید برای شما فراهم کنند . ارتباط بین دو کامپیوتر هم گاها از طریق ارتباط دو کامپیوتر، با کامپیوتر سرور برقرار میشود .
برای ارتباط بین کامپیوتر شما و سرور ( یا حتی دیگر کامپیوتر ها ) باید قوانینی وجود داشته باشد که به آن پروتکل میگویند .پروتکل اینکه پیغامی که برای سرور میفرستید به همان صورتی است که سرور بفهمد ، یا اینکه پیامتان را باید در چه زمانی بفرستید ، تکه تکه بفرستید یا کامل و ... را کنترل میکند .
دو پروتکل معروف TCP و UDP در ابتدا پیام شما را کنترل میکنند که TCP به ارتباط دو طرفه و قابل اطمینان نظارت دارد ( مثل فرستاد یک پیام و گرفتن جواب ) و کنترل میکند که پیام به شما رسیده یا خیر ، و اگر نرسیده دوباره ارسال کند .
UDP ارتباط مطمئن را فراهم نمیکند و یک طرفه است و در ارتباطاتی استفاده میشود که پیام دو طرفه نیاز نیست ( مثل دیدن یک ومسابقه فوتبال زنده در اینترنت که اگر قسمتی از ویدیو نرسد ، ویدیو در آن قسمت ثابت میماند و از قسمت گم شده به بعد ویدیو ادامه پیدا می کند )
برنامه نویسی سوکت ، ارتباط بین یک برنامه در کامپیوتر شما و سرور از طریق TCP است . سوکت نیز نقطه-پایان ارتباط شما و سرور است . یعنی شما به سوکت اطلاعات را میدهید و از سوکت ارسال میشوند و در سوکت سرور دریافت و سرور از سوکتش اطلاعات را میخواند .
وقتی ارتباطی برقرار شد سرور شی سوکت خود را آخرین نقطه اتصال خود قبل از ارسال می سازد و کامپیوتر شما و سرور با نوشتن و خواندن در سوکت خودشان و ارسال اطلاعات درون سوکت ، ارتباط برقرار میکنند .
به عنوان مثال در زبان جاوا :
وقتی دو کامپیوتر از طریق TCP با هم ارتباط برقرار کنند ، اتفاقات زیر می افتد :
1- سرور یک شی ServerSocket ( یک کلاس از کتابخانه جاواست ) می سازد .
2-متد accept() را از همان کلاس فراخوانی می کند به این معنا که آماده ارتباط با هر کسی است که به او متصل شود .
3-کاربری که میخواهد ارتباطی با سرور برقرار کند ، یک شی Socket میسازد و اسم سرور و پورتی که میخواهد به آن وصل شود ( برای هر نوع اتصالی باید به یک پورت خاص سرور وصل شد . مثلا برای ارتباط از طریق صفحات وب ، یعنی شما از صفحه وبی که روی سرور است استفاده کنید باید به پورت 80 وصل شوید )
4-متد () accepet سرور که تابه حال منتظر مانده به سوکت جدیدی از سرور که به سوکت کابر متصل است ، مراجعه میکند . پس از آن هر دو طرف می توانند اطلاعات را بصورت بایت هایی برای یکدیگر ارسال کنند که بایت ها تبدیل به متن ، صدا ، تصویر و غیره می شوند .
مثالی از یک کلاس سوکت و سرورسوکت در زبان جاوا در این لینک میبیند : مثال
۹۳/۱۱/۱۶