دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۱۴
  • مهر

جلسه ۳۱ : کار با شبکه در جاوا

  • دسته‌بندی‌ها :
جلسه ۳۱ : کار با شبکه در جاوا
    • جزئیات
    • نوع محتواآموزش تصویری

      مقدمه

      با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرنو کاربرانی که دوره کامل آموزش برنامه نویسی جاوا را دنبال می کنند. network programming (برنامه نویسی شبکه) به برنامه نویسی که در بین دستگاه های مختلف (رایانه) اجرا می شود اشاره می کند.  که در آن دستگاه ها با استفاده از یک شبکه به یکدیگر متصل می شوند. بسته java.net از API های J2SE حاوی مجموعه ای از کلاس ها و اینترفیس هایی است که جزئیات ارتباطات سطح پایین را فراهم می کنند، به شما این امکان را می دهد که برنامه هایی بنویسید که بر روی حل یک مسئله متمرکز باشد. برای آشنایی با چگونگی کار با شبکه در جاوا در ادامه ی مباحث این بخش با ما همراه باشید.

      کار با شبکه در جاوا

      در ادامه ی مباحث برای درک چگونگی کار با شبکه در جاوا به کلاس ها و متدهای کدنویسی سوکت اشاره می کنیم.

      بسته java.net از دو پروتکل شبکه مشترک پشتیبانی می کند:

      • TCP :

      TCP مخفف Transmission Control Protocol ( پروتکل کنترل انتقال) است که اجازه برقراری ارتباط بین دو برنامه را می دهد.

      TCP معمولا بر روی پروتکل اینترنتی استفاده می شود که به عنوان TCP / IP نامیده می شود.

      • UDP :

      UDP برای پروتکل دیتاگرام کاربر، یک پروتکل بدون اتصال است که اجازه می دهد تا بسته های داده ها بین برنامه ها انتقال یابد.

      در این بخش به بررسی دو موضوع زیر می پردازیم:

      • Socket Programming :

      این مفهوم به طور گسترده ای در شبکه استفاده شده و در ادامه آن را بررسی می کنیم.

      • URL Processing :

      این گزینه در مورد پردازش آدرس ها است.

      برنامه نویسی سوکت

      سوکتها مکانیزم ارتباطی بین دو کامپیوتر را با استفاده از TCP ارائه می دهند.

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

      وقتی اتصال برقرار می شود، سرور یک شیء سوکت را در انتهای ارتباط برقرار می کند.

      مشتری و سرور هم اکنون می توانند با نوشتن و خواندن از سوکت ارتباط برقرار کنند.

      کلاس java.net.Socket یک سوکت را نشان می دهد.

      کلاس java.net.ServerSocket مکانیزمی برای برنامه سرور برای گوش دادن به مشتریان و ایجاد ارتباط با آنها فراهم می کند.

      مراحل زیر هنگام ایجاد اتصال TCP بین دو کامپیوتر با استفاده از سوکت انجام می شود :

      • سرور یک شیء ServerSocket را دارد که نشان می دهد کدام شماره ارتباط روی پورت رخ می دهد.
      • سرور از متد () accept کلاس ServerSocket می خواهد. این روش منتظر می ماند تا زمانی که یک مشتری به سرور در پورت داده متصل شود.
      • پس از آنکه سرور در انتظار است، یک مشتری یک شیء سوکت را ایجاد می کند و نام سرور و شماره پورت را برای اتصال به آن مشخص می کند.
      • سازنده کلاس سوکت تلاش می کند که مشتری را به سرور مشخص شده و شماره پورت وصل کند.
      • اگر ارتباط برقرار شود، مشتری اکنون دارای یک شیء سوکت بوده و قادر به برقراری ارتباط با سرور است.
      • در سمت سرور، متد () accept مرجع را به یک سوکت جدید در سرور که به سوکت مشتری متصل است، باز می گرداند.

      پس از برقراری ارتباط، ارتباطات می تواند با استفاده از جریان های I / O رخ دهد و هر سوکت دارای OutputStream و InputStream است.

      OutputStream مشتری به InputStream سرور متصل است، و InputStream مشتری به OutputStream سرور متصل است.

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

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

      متدهای کلاس ServerSocket

      کلاس java.net.ServerSocket توسط برنامه های کاربردی سرور برای به دست آوردن یک پورت و گوش دادن به درخواست های مشتری استفاده می شود.

      کلاس ServerSocket شامل ۴ سازنده ی زیر است :

      ردیفمتد و توضیحات
      ۱public ServerSocket(int port) throws IOException

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

      اگر پورت قبلا توسط یک برنامه دیگر محدود شده باشد، خطا رخ می دهد.

      ۲public ServerSocket(int port, int backlog) throws IOException

      همانند سازنده قبلی، پارامتر backlog مشخص می کند که تعداد مشتری های ورودی چگونه در یک صف منتظر ذخیره می شوند.

      ۳public ServerSocket(int port, int backlog, InetAddress address) throws IOException

      همانند سازنده قبلی، پارامتر InetAddress آدرس IP محلی را برای اتصال به آدرس مشخص می کند.

      InetAddress برای سرورهایی که ممکن است چندین آدرس IP داشته باشند، به کار می رود.

      به سرور اجازه می دهد تا مشخص کند کدام آدرس IP خود را برای قبول درخواست های مشتری در آن استفاده می شود.

      ۴public ServerSocket() throws IOException

      یک سوکت سرور غیر مجاز را ایجاد می کند.هنگام اتصال به سرور سوکت، از متد () bind استفاده کنید..

      اگر سازنده ی ServerSocket خطایی صادر نکند این به این معنی است که برنامه با موفقیت به پورت متصل شده است.

      جدول زیر شامل متدهای معمول کلاس ServerSocket است:

      ردیفمتد و توضیحات
      ۱public int getLocalPort()

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

      ۲public Socket accept() throws IOException

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

      ۳public void setSoTimeout(int timeout)

      مدت زمانیکه نیاز است تا مشتری به پورت مشخص شده متصل شود را تعیین می کند.

      ۴public void bind(SocketAddress host, int backlog)

      سوکت را به سرور مشخص شده و پورت در شی SocketAddress متصل می کند.

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

      سپس یک اشاره به این سوکت جدید را می دهد. اتصال TCP در حال حاضر بین مشتری و سرور وجود دارد، و ارتباط می تواند شروع شود.

      متدهای کلاس سوکت

      کلاس java.net.Socket نشان دهنده سوکتی است که هر دو سرویس گیرنده و سرور برای برقراری ارتباط با یکدیگر استفاده می کنند.

      سرور یک شیء سوکت را از مقدار بازگشتی از متد ()accept دریافت می کند.

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

      ردیفمتد و توضیحات
      ۱public Socket(String host, int port) throws UnknownHostException, IOException.

      این متد برای اتصال به سرور مشخص شده در پورت مشخص شده تلاش می کند.

      ۲public Socket(InetAddress host, int port) throws IOException

      این متد با سازنده قبلی مشابه است، به جز اینکه میزبان با یک شیء InetAddress مشخص می شود.

      ۳public Socket(String host, int port, InetAddress localAddress, int localPort) throws IOException.

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

      ۴public Socket(InetAddress host, int port, InetAddress localAddress, int localPort) throws IOException.

      این متد با سازنده قبلی مشابه است، به جز اینکه میزبان با یک شیء InetAddress به جای یک رشته مشخص می شود.

      ۵public Socket()

      یک سوکت اتصال غیرمجاز ایجاد می کند. از متد () connect برای اتصال این سوکت به سرور استفاده کنید.

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

      توجه داشته باشید که هر دو سرویس دهنده و سرور یک شی Socket دارند، بنابراین این متدها می تواند توسط هر دو استفاده شود.

      ردیفمتد و توضیحات
      ۱public void connect(SocketAddress host, int timeout) throws IOException

      این متد فقط زمانی مورد نیاز است که Socket را با استفاده از سازنده بدون آرگومان بازیابی کنید.

      ۲public InetAddress getInetAddress()

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

      ۳public int getPort()

      پورت سوکت را بر روی دستگاه از راه دور متصل می کند.

      ۴public int getLocalPort()

      پورت سوکت را بر روی دستگاه محلی متصل می کند.

      ۵public SocketAddress getRemoteSocketAddress()

      آدرس سوکت راه دور را برمی گرداند.

      ۶public InputStream getInputStream() throws IOException

      stream ورودی سوکت را برمی گرداند. stream ورودی به stream خروجی سوکت راه دور وصل شده است.

      ۷public OutputStream getOutputStream() throws IOException

      stream خروجی سوکت را برمی گرداند. stream خروجی به stream ورودی سوکت راه دور وصل شده است.

      ۸public void close() throws IOException

      یک سوکت را خاموش می کند،و این شیء سوکت دیگر قادر به اتصال دوباره به هر سرور نیست.

      متدهای کلاس InetAddress

      این کلاس نشان دهنده یک پروتکل اینترنت (IP) است. در زیر متد های مفید زیر را که در هنگام انجام برنامه نویسی سوکت مورد نیاز است را دنبال کنید:

      ردیفمتد و توضیحات
      ۱static InetAddress getByAddress(byte[] addr)

      با توجه به آدرس IP خام، یک شیء InetAddress را باز می گرداند.

      ۲static InetAddress getByAddress(String host, byte[] addr)

      یک InetAddress را براساس نام میزبان ارائه شده و آدرس IP ایجاد می کند.

      ۳static InetAddress getByName(String host)

      با توجه به نام میزبان، آدرس IP یک میزبان را تعیین می کند.

      ۴String getHostAddress()

      رشته آدرس IP را در نمایش متن ارائه می دهد.

      ۵String getHostName()

      نام میزبان برای این آدرس IP را دریافت می کند.

      ۶static InetAddress InetAddress getLocalHost()

      میزبان محلی را بازگرداند.

      ۷String toString()

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

      مثالی از سوکت سمت کاربر

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

      مثال :

      مثال : 

      مثالی از Socket Server

      برنامه GreetingServer زیر نمونه ای از یک برنامه سرور است که با استفاده از کلاس سوکت برای گوش دادن به مشتریان در شماره پورت مشخص شده است:

      مثال:

      مثال : 

      کامپایل کلاینت و سرور را بصورت زیر شروع کنید:

      مثال : 

      نتیجه ی اجرای کد فوق بصورت زیر خواهد بود:

      مثال : 

      کلام آخر

      یکی از قابلیت های ویژه ی زبان جاوا امکان کدنویسی شبکه برای ارتباط بین دو یا چند سیستم است. با استفاده از قابلیت کار با شبکه در جاوا و کد نویسی سوکت امکان اجرای برنامه ها روی بستر شبکه فراهم می شود.

      QR:  جلسه ۳۱ : کار با شبکه در جاوا
      به اشتراک بگذارید


      دیدگاه کاربران
      1. تصویر کاربر
        • تصویر کاربر
      2. تصویر کاربر