زکات علم

زَکاةُ العِلمِ أن تُعَلِّمَهُ عِبادَ اللّه‏ِ امام باقر (ع)
زکات علم

مطالبی در زمینه کامپیوتر و علاقه مندی های شخصی من مطالب این وبلاگ غالبا مطالبی ست که در جای جای اینترنت کتاب یا دانشته های شخصی خودم می باشد که به عنوان مرجعی برای رجوع دوباره در اینجا جمع آوری شده اند .
ehsunitd.ir personal website

پیوندها

socket progroming چیست

يكشنبه, ۱ تیر ۱۳۹۳، ۱۲:۵۰ ب.ظ

«1» port چیست‌؟                                                                                                                                                              فهرست مطالب

بطور کلی هر کامپیوتر  ( به ازای هر کارت شبکه اش ) یک IP دارد، که از طریق این IP‌ می توان به ماشین فوق دسترسی پیدا نمود. این آدرس ( IP ) به 653535 پورت ( PORT ) تقسیم می شود. PORT یک مفهوم منطقی است که به کمک آن می توان بطور همزمان با چندین ماشین دیگر، ارتباط برقرار نمود.

PORT ها به دو گروه رزرو شده (پورت های بین 1 تا 1024) و غیر رزرو شده (سایر پورت ها) تقسیم می شوند. پورت های رزرو شده برای کاربردهای استاندارد مورد استفاده قرار می گیرند. مانند :

 

USAGE

PORT NUMBER

SMTP

25

HTTP

80

POP

110

News Server

119

 

 

در برنامه های Server/ Client از PORT های غیر رزرو شده که آزاد باشند ( مورد استفاده سایر برنامه ها نباشند) می توان جهت برقراری ارتباطات مورد نیاز، استفاده نمود. یعنی می تواند به ازای هر پورت با یک برنامه ارتباط برقرار کند.

 

TCP or UDP Port

 

======================================

«2» socket چیست؟                                                                                                                                                          فهرست مطالب

سوکت یک ارتباط قابل اطمینان جهت انتقال داده ها بین دو host (ماشین مورد نظر) می باشد. سوکت، برنامه نویسان را از پیچیده گی های فرآیند برقراری ارتباط بین دو ماشین مانند جزئیات کد کردن بسته ها، فرآیند ارسال داده ها در شبکه، ارسال مجدد بسته های خراب و ... دور می سازد و برنامه نویسان به راحتی قادر به توسعه برنامه ها یتحت شبکه می باشند.

یک سوکت در حقیقت ترکیبی از IP یا  HostName و یک شماره پورت ( Port Number ) از آن IP می باشد.

بطور کلی یک سوکت چهار عمل اصلی زیر را انجام می دهد:

    «1» اتصال به ماشین راه دور

    «2» ارسال داده ها

    «3» دریافت داده ها

    «4» بستن یا خاتمه اتصال

توجه به این نکته مهم می باشد که یک سوکت در یک زمان فقط قادر است تا فقط با یک ماشین (host) ارتباط برقرار کند.

با توجه به تعاریف فوق، می توان به راحتی تفاوت PORT و SOCKET‌ را درک نمود.

======================================

   «3» پروتکل Transmission Control Protocol )    TCP )                                                                                                              فهرست مطالب

پروتکلی برای انتقال داده ها (سرویس ها) بین دو ماشین با ضریب اعتماد بالا می باشد. چنین ارتباطی (بین دو نقطه) را Unicast می نامند. ‌ TCP پروتکل اتصال گرا ( Connection - Oriented ) است یعنی ارتباط برقرار شده بین کلاینت و سرور تا پایان روند انتقال اطلاعات باقی می ماند. این پروتکل در مواردی که اطمینان از انتقال صحیح داده ها بین مبدا و مقصد بسیار مهم است ( مانند زمان دانلود کردن داده ها) مورد استفاده قرار می گیرد. در چنین حالتی کامپیوتر مقصد با دریافت صحیح هر بسته از مبدا یک Acknowledgment‌ به منظور اطلاع از دریافت صحیح و بی عیب به ماشین مبدا ارسال می کند. اگر پیغام اعلام وصول فوق به مبدا نرسد، مبدا دوباره بسته را ارسال می کند.

======================================

   «4» پروتکل User Datagram Protocol )    UDP )                                                                                                                       فهرست مطالب

پروتکل فوق یک پروتکل بدون اتصال (Connection - Less) می باشد. این پروتکل امکان توزیع داده ها را با سرعت بالا تضمین می کند، ولی هیچ تضمینی در جهت صحت ارسال داده ها و دریافت آنها توسط ماشین مقصد ارائه نمی دهد. بر اساس شرایط این پروتکل اگر در روند انتقال اطلاعات مشکلی پیش آید و بسته ارسال شده به صورت کامل به مقصد نرسد،بسته فوق مجددا برای کامپیوتر مقصد ارسال نخواهد شد.

«نکته» از پروتکل فوق به منظور انتقال داده ها به چندین ماشین با استفاده از BroadCast‌ و یا MultiCast استفاده می شود.

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

======================================

«5» تفاوت serverSocket و datagramSocket چیست؟                                                                                                             فهرست مطالب

بسته به نوع برنامه ای که ایجاد می کنیم، می توان از datagramSocket‌ یا  serverSokect استفاده نماییم. اگر برنامه ما بر مبنای پروتکل UDP باشد ازdatagramSocket‌  و اگر بر مبنای پروتکل TCP باشد از serverSokect استفاده می کنیم. همانطور که گفته شد، پروتکل TCP جهت ارسال داده ها همراه با تضمین موفقیت آمیز بودن عمل انتقال مانند دانلود و از پروتکل UDP جهت ارسال داده ها با سرعت بالا، اتصال به چند ماشین به طور همزمان و بدون تضمین موفقیت آمیز بودن عمل انتقال مانند کاربردهای RealTime‌  از جمله ویدئو کنفرانس، Internet TV و ... استفاده می شود.

هر دو Socket فوق در سمت ماشین سرور ایجاد می شوند. زمانی که یک ماشین سرور بخواهد از طریق یکی از پورتهایش منتظر رسیدن درخواست اتصال یک کلاینت شود (  در اصطلاح در حال Listen کردن است) ابتدا باید یک سوکت از یکی از نوع های فوق ایجاد کند. سپس پورت مورد نظر را به آن متصل ( Bind ) نموده و به حالت انتظار فرو می رود.

 «نکته» اگر شماره پورتی که می خواهیم با serverSocket مورد نظرمان Bind‌ کنیم، توسط سوکت دیگری در حال استفاده باشد، با پیغام خطای زیر مواجه می شویم.

java.net.BindException

======================================

   «6» بررسی روند برقراری ارتباط بین کلاینت و سرور                                                                                                                   فهرست مطالب 

در برنامه های کلاینت/سروری یا اصطلاحا برنامه نویسی تحت Socket‌ در جاوا، روند برقراری ارتباط بین برنامه کلاینت و برنامه سرور بصورت زیر می باشد:

«1» ابتدا برنامه سرور بر روی ماشین خود اجرا شده و پورتی که در برنامه جهت دریافت درخواست های کلاینت تعیین گردیده است، گوش می دهد. همانطور که گفته شد در این مرحله، برنامه سرور باید یک سوکت از نوع serverSocket یا datagramSocket‌ ایجاد نماید.

«2» برنامه کلاینت اجرا شده و با توجه به IP‌ یا HostName‌ سرور و شماره پورتی که سرور به آن گوش می دهد، درخواستی را به سمت سرور و به جهت برقراری ارتباط ارسال می کند.

ارتباط بین کلاینت و سرور

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

ارتباط بین کلاینت و سرور

«4» برنامه کلاینت نیز در ماشین کلاینت یک سوکت بر اساس پورتی که از طریق آن با سرور ارتباط برقرار نموده، ایجاد می کند.

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

«نکته»  در زمان ایجاد سوکت در برنامه کلاینت، نیازی نیست که برنامه کلاینت پورتی با شماره یکسان نسبت به شماره پورت برنامه سرور انتخاب کند.

 

 

کلید واژه: 

برنامه نویسی سوکت ، Socket چیست ، کار با سوکت ها در جاوا ، ارتباط کلاینت ( Client ) و سرور ( Server ) از طریق سوکت ( Socket )

  

  • ehsan gholami

نظرات (۱)

  • بهنام عبدالهی
  • سلام این یک دعوتنامه تبلیغاتی نیست، لطفا تا آخر سخنم را گوشی دهید.
    من عارف متولد سال 80 هستم و استعداد اندکی در زمینه نوشتن داستان های کوتاه دارم.
    شنیده ام نقد و انتقاد روشن کننده ی راه است. به همین جهت و در همین راستا از شما مدیر گرامی این سایت درخواست می کنم که به وبلاگ من(عارفانه) تشریف بفرمایید و مطالعه کنید و نظرتتون رو حتما حتما حتما بیان کنید.
    ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
    شما میتوانید از این تگهای html استفاده کنید:
    <b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
    تجدید کد امنیتی