آموزش جاوا (Java) قسمت 49 : برنامه نویسی سوکت و شبکه قسمت 1

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

  • TCP: TCP مخفف Transmission Control Protocol می باشد که یک ارتباط قابل اعتماد و ایمن (reliable) را بین دو برنامه ایجاد می کند. این پروتکل همچنین در بستر اینترنت نیز استفاده می شود که به آن TCP//IP گفته می شود.
  • UDP: UDP مخفف User Datagram Protocol بوده و یک پروتکل connection-less می باشد که اجازه می دهد بسته های اطلاعاتی در شبکه ارسال شوند. دوستانی که در مورد این مفاهیم دچار اشکال هستند به مقالات و آموزش های network+ در وب سایت تخصصی فناوری اطلاعات (Itpro) مراجعه کنند.

آموزش جاوا (Java) قسمت 49 : برنامه نویسی سوکت و شبکه قسمت 1

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

سوکت ها یک مکانیزم ارتباطی بین دو کامپیوتر را با استفاده از پروتکل TCP فراهم می آورند. برنامه کلاینت یک سوکت تعریف می کند و تلاش می کند به برنامه سرور وصل شود. وقتی که ارتباط برقرار شد برنامه سرور یک شئ سرور ایجاد می کند و با استفاده از این سوکت ها این دو برنامه به تبادل داده مشغول می شوند. ارسال داده ها با نوشتن داده در روی سوکت ها انجام می شود. کلاس java.net.Socket برای ساخت سوکت مورد استفاده قرار می گیرد و کلاس java.net.ServerSocket مکانیزمی را فراهم می آورد تا برنامه سرور بتواند به خط گوش دهد و با کلاینت ها ارتباط برقرار کند. مراحل ایجاد یک ارتباط TCP بین دو کامپیوتر توسط سوکت به شرح زیر است. دقت داشته باشید که منظور از سرور در اینجا سرور فیزیکی نیست که در شبکه مورد بحث واقع می شود بلکه منظور ما از سرور همان برنامه ای است که برنامه های دیگر به آن پیام می فرستند. منظور از پورت هم پورت نرم افزاری بوده که یک شماره دارد و با پورت سخت افزاری اشتباه گرفته نشود.

  • سرور یک شئ ServerSocket می سازد و شماره پورت ارتباط را مشخص می کند.
  • سرور متد accept را از شئ ServerSocket فراخوانی می کند. این متد منتظر می ماند تا یک کلاینت با استفاده از شماره پورت مشخص شده به سرور متصل شود.
  • بعد از این که سرور به حالت انتظار رفت، کلاینت مورد نظر یک شئ از کلاس Socket می سازد که آدرس سرور و شماره پورتی را که قرار است را برای آن مشخص می کند .
  • متد constructor کلاس Socket سعی می کند که به سرور مشخص شده با شماره پورت مشخص شده وصل شود. اگر ارتباط برقرار شد برنامه کلاینت یک شئ دارد که با استفاده از آن می تواند به سرور وصل شود و تبادل داده بکند.
  • در سمت سرور متد accept یک شئ Socket از سوکت جدید ایجاد شده برمی گرداند. با استفاده از این سوکت می توان با کلاینت مورد نظر ارتباط برقرار کرد.

بعد از این که ارتباط برقرار شد می توان با استفاده از استریم های I//O داده ها را انتقال داد. هر سوکتی هم InputStream و هم OutputStream را دارا می باشد. استریم OutputStream مربوط به کلاینت به استریم InputStream مربوط به سرور وصل می باشد و بالعکس استریم InputStream مربوط به کلاینت به استریم OutputStream مربوط به سرور متصل است. پروتکل TCP یک پروتکل دوراهه است. بنابراین داده ها همزمان می توانند ارسال و دریافت شوند. در ادامه به کلاس ها و متدهایی که برای ارتباط سوکت مناسب هستند می پردازیم.

متدهای کلاس ServerSocket

کلاس java.net.ServerSocket در برنامه سمت سرور استفاده می شود و از این کلاس برای گرفتن یک پورت و گوش دادن به درخواست های کلاینت ها به کار می رود. این کلاس 4 متد constructor دارد که این constructor ها به شرح زیر می باشند.

  1. سازنده با یک پارامتر ورودی عددی
  2. public ServerSocket(int port) throws IOException
    

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

  1. سازنده با دو پارامتر ورودی عددی
  2. public ServerSocket(int port, int backlog) throws IOException
    

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

  1. سازنده با دو پارامتر عددی و یک پارامتر از نوع InetAddress
  2. public ServerSocket(int port, int backlog, InetAddress address) throws IOException
    

این constructor مانند قبلی است و پارامتر address برای این است که مشخص کنیم که سرور از کدام IP محلی استفاده کند. این برای زمانی است که در یک کامپیوتر چندین کارت شبکه موجود باشد و هرکدام IP های مختلفی داشته باشند. در این صورت باید یک IP را معرفی کنیم تا سرور به آن مقید شود باید از این constructor استفاده کنیم و به سرور بگوییم که فقط کلاینت های این آدرس را بپذیر.

  1. سازنده بدون پارامتر این سازنده هیچ پارامتری ندارد حتی شماره پورت. این سازنده یک سوکت سروری می سازد که به هیچ پورتی bind نشده است. وقتی که از این سازنده استفاده می کنید باید بعد از آن با استفاده از متد bind شماره پورت و بقیه قسمت ها را به شئ ServerSocket اختصاص دهید.

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

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

  • متد getLocalPort: این متد پورتی را که سرور در حال گوش دادن به آن است را برمی گرداند.
  • متد accept این متد برای انتظار برای کلاینت های ورودی به کار می رود. این متد به صورت بلوکه شده باقی می ماند تا وقتی که یک کلاینت با پورت مشخص شده به آن وصل شود یا زمان انتظار سوکت به پایان برسد. دقت داشته باشید که اختصاص زمان انتظار با استفاده از متد setSoTimeout انجام می شود و اگر زمان انتظاری برای آن در نظر نگرفته باشیم انتظار به صورت بی نهایت خواهد بود.
  • متد setSoTimeout این متد برای مشخص کردن زمان انتظار به کار می رود که یک ورودی int دارد که زمان انتظار را به میلی ثانیه مشخص می کند.
  • متد bind: این متد برای زمانی که از constructor بدون پارامتر برای ساخت ServerSocket استفاده کرده باشید مناسب است که با استفاده از آن بتوانید شماره پورت و شماره IP و همچنین backlog را مشخص کنید.

تا به این بخش به معرفی کلاس ServerSocket و متدهای آن و همچنین مفاهیم اصلی socket programming پرداختیم. حال در مطلب بعدی به برنامه نویسی جاوایی سوکت و قسمت کلاینت و نحوه ارتباط خواهیم پرداخت Itpro باشید

نویسنده: مهدی عادلی فر

منبع: جزیره برنامه نویسی و توسعه نرم افزار وب سایت توسینسو

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد.

#برنامه_نویسی_جاوا #آموزش_برنامه_نویسی_جاوا #آموزش_جاوا #کلاس_serversocket_در_جاو #برنامه_نویسی_سوکت_در_جاوا #برنامه_نویسی_شبکه #دوره_آموزشی_جاوا #برنامه_نویسی_شبکه_با_جاوا #برنامه_نویسی_سوکت
عنوان
1 آموزش جاوا (Java) قسمت 1 : معرفی ، خصوصیات و شروع به کار رایگان
2 آموزش جاوا (Java) قسمت 2 : شی گرایی قسمت یک رایگان
3 آموزش جاوا (Java) قسمت 3: شی گرایی قسمت دو رایگان
4 آموزش جاوا (Java) قسمت 4 : شی گرایی قسمت سه رایگان
5 آموزش جاوا (Java) قسمت 5 : انواع داده رایگان
6 آموزش جاوا (Java) قسمت 6 : انواع متغیر رایگان
7 آموزش جاوا (Java) قسمت 7 : Modifier ها رایگان
8 آموزش جاوا (Java) قسمت 8 : عملگرها قسمت یک رایگان
9 آموزش جاوا (Java) قسمت 9 : عملگرها قسمت دو رایگان
10 آموزش جاوا (Java) قسمت 10 : حلقه های تکرار رایگان
11 آموزش جاوا (Java) قسمت 11 : عبارات شرطی رایگان
12 آموزش جاوا (Java) قسمت 12 : کلاس Wrapper اعداد رایگان
13 آموزش جاوا (Java) قسمت 12 : کلاس Wrapper اعداد رایگان
14 آموزش جاوا (Java) قسمت 14: کلاس Wrapper کاراکترها رایگان
15 آموزش جاوا (Java) قسمت 15 : کلاس String و کار با رشته قسمت یک رایگان
16 آموزش جاوا (Java) قسمت 16 : کلاس String و کار با رشته قسمت دو رایگان
17 آموزش جاوا (Java) قسمت 17 : کلاس String و کار با رشته قسمت سه رایگان
18 آموزش جاوا (Java) قسمت 18 : کلاس String و کار با رشته قسمت چهار رایگان
19 آموزش جاوا (Java) قسمت 19 : StringBuilder و StringBuffer رایگان
20 آموزش جاوا (Java) قسمت 20 : استفاده از آرایه ها رایگان
21 آموزش جاوا (Java) قسمت 21 : آموزش کار با تاریخ رایگان
22 آموزش جاوا (Java) قسمت 22 : عبارات منظم (Regular Expression) رایگان
23 آموزش جاوا (Java) قسمت 23 : تعریف و استفاده از متدها قسمت یک رایگان
24 آموزش جاوا (Java) قسمت 24 : تعریف و استفاده از متدها قسمت دو رایگان
25 آموزش جاوا (Java) قسمت 25 : کار با استریم ها و فایل ها رایگان
26 آموزش جاوا (Java) قسمت 26 : کار با دایرکتوری ها رایگان
27 آموزش جاوا (Java) قسمت 27 : کلاس ByteArrayInputStream رایگان
28 آموزش جاوا (Java) قسمت 28 : معرفی کلاس File و متدها رایگان
29 آموزش جاوا (Java) قسمت 29 : معرفی و شرح Exception ها قسمت 1 رایگان
30 آموزش جاوا (Java) قسمت 30 : معرفی و شرح Exception ها قسمت 2 رایگان
31 آموزش جاوا (Java) قسمت 31 : معرفی و شرح Exception ها قسمت 3 رایگان
32 آموزش جاوا (Java) قسمت 32 : استفاده از انوع کلاس های داخلی رایگان
33 آموزش جاوا (Java) قسمت 33 : وراثت کلاس ها و انواع آن رایگان
34 آموزش جاوا (Java) قسمت 34 : Override کردن متد ها رایگان
35 آموزش جاوا (Java) قسمت 35 : چند ریختی (Polymorphism) رایگان
36 آموزش جاوا (Java) قسمت 36 : Enum و ویژگی های آن رایگان
37 آموزش جاوا (Java) قسمت 37 : معرفی Abstract رایگان
38 آموزش جاوا (Java) قسمت 38 : استفاده از کپسول بندی (Encapsulation) رایگان
39 آموزش جاوا (Java) قسمت 39 : استفاده از اینترفیس ها رایگان
40 آموزش جاوا (Java) قسمت 40 : پکیج(Package) و نحوه استفاده رایگان
41 آموزش جاوا (Java) قسمت 41 : معرفی داده ساختارها Enumeration رایگان
42 آموزش جاوا (Java) قسمت 42 : داده ساختار BitSet رایگان
43 آموزش جاوا (Java) قسمت 43 : داده ساختار Vector رایگان
44 آموزش جاوا (Java) قسمت 44 : داده ساختار Stack (پشته) رایگان
45 آموزش جاوا (Java) قسمت 45 : داده ساختار Dictionary رایگان
46 آموزش جاوا (Java) قسمت 46 : داده ساختار Hashtable رایگان
47 آموزش جاوا (Java) قسمت 47 : داده ساختار Properites رایگان
48 آموزش جاوا (Java) قسمت 48 : معرفی و آموزش جنریک (Generic) رایگان
49 آموزش جاوا (Java) قسمت 49 : برنامه نویسی سوکت و شبکه قسمت 1 رایگان
50 آموزش جاوا (Java) قسمت 50 : برنامه نویسی سوکت و شبکه قسمت 2 رایگان
51 آموزش جاوا (Java) قسمت 51 : استفاده از Lambda Expression رایگان
52 آموزش جاوا (Java) قسمت 52 : Thread و Multi-Threading رایگان
53 آموزش جاوا (Java) قسمت 53 : Runnable در Thread و Multi-Threading رایگان
54 آموزش جاوا (Java) قسمت 54 : کلاس Thread و متدها رایگان
زمان و قیمت کل 0″ 0
3 نظر
مجتبی میناوند

سپاس فراوان بابت آموزش های جاوا، تمام آموزش های جاوای داخل انجمن رو از چه طریقی میتونم ببینم ؟

مهدی عادلی فر

از قسمت جستجوی سایت آموزش جاوا رو سرچ کنید

بیات

مهندس یک سوال

دادهای وپکت های udp یا میرسن یا نمیرسن

منظورم بستههای udp هست میخاستم بدونم وقتی میرسن

چطوربایک درخاست وقتی میخای دادها رواز پورت بگیری یک بسته روکامل بگیرم

من باسی مینویسم اماخب باجاواهم جواب بدی احتمالاباسی هم بشه

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره تابستانه می تونی امروز ارزونتر از فردا خرید کنی ....