+ All Categories
Home > Education > Socket programming concepts (Persian)

Socket programming concepts (Persian)

Date post: 29-Jun-2015
Category:
Upload: pedram-hosseini
View: 250 times
Download: 13 times
Share this document with a friend
Description:
Socket programming concepts - - - - - - - - - - - - - - Language: Persian Programming language: C#.NET - - - - - - - - - - - - - - Pedram Hosseini - - - - - - - - - - - - - - Department of Computer Engineering University of Guilan - - - - - - - - - - - - - - Email: [email protected]
Popular Tags:
21
ﻣﻔﺎﻫﯿﻢ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺳﻮﮐﺖ ﺗﻬﯿﻪ و ﺗﻨﻈﯿﻢ: ﭘﺪرام ﺣﺴﯿﻨﯽ ﮔﺮوه ﻣﻬﻨﺪﺳﯽ ﮐﺎﻣﭙﯿﻮﺗﺮ، داﻧﺸﮕﺎه ﮔﯿﻼن[email protected]
Transcript
Page 1: Socket programming concepts (Persian)

مفاهیم برنامه نویسی سوکتپدرام حسینی :تهیه و تنظیم

گروه مهندسی کامپیوتر، دانشگاه گیالن[email protected]

Page 2: Socket programming concepts (Persian)

فهرست مطالب

سوکت چیست؟انواع سوکت ها و مفاهیم آنهاانواع ارتباطات سوکتسمت سرورتوابع مورد استفاده درتوابع مورد استفاده در سمت مشتري ارائه یک مثال جامع به زبانC#.Net

تمامی کدهاي برنامه نویسی در این ارائه به زبان : تذکرC#.Net هستند.

2

Page 3: Socket programming concepts (Persian)

سوکت چیست؟

سوکت در واقع یک واسط میان برنامه کاربردي و شبکه است.برنامه کاربردي سوکت را ایجاد می نماید.سوکت بیان کننده شیوه برقراري ارتباط است نوع.

سوکت از نوعTCP استاتصال گرا ارتباطی. سوکت از نوعUDP است غیرمتصلارتباطی.

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

.دریافت نماید

3

Page 4: Socket programming concepts (Persian)

:انواع سوکتکاربرد پروتکل انتقال فایل FTP – نوعTCP

پروتکل انتقال صفحات ابرمتن HTTP – نوعTCP

الکترونیکی پروتکل انتقال نامه هايSMTP – نوعTCP

و تصویر یا سیستمانتقال صدا وDNS – نوعUDP

1 -انواع اصلی سوکت ها

جریان گراسوکت o سوکتTCPoارتباط قابل اعتمادoترتیب ارسال تضمین شده استo استاتصال گرا.

دیتاگرامسوکت o سوکتUDPoارتباط غیر قابل اعتمادo نمی شودترتیب ارسال تضمین.oغیر متصل است.

4

Page 5: Socket programming concepts (Persian)

2 -انواع اصلی سوکت ها

TCP نوع استریم مبتنی بر پروتکلسوکتهاي به ا قبل از مبادله داده ه یک اتصالبرقراري لزوم

روش دست تکانی سه مرحله اي

App

socket3 2 1

Dest.

App

socket3 2 1

D1

D3

D2

UDPل نوع دیتاگرام مبتنی بر پروتکسوکتهاي و یا بدون نیاز به برقراري هیچ ارتباطداده مبادله

ت داده ها، صحرسیدن برتضمینی عدم و یاتصالداده ها و ترتیب داده ها

5

Page 6: Socket programming concepts (Persian)

TCPنوع –ارتباطات سوکت 6

Page 7: Socket programming concepts (Persian)

UDPنوع –ارتباطات سوکت 7

Page 8: Socket programming concepts (Persian)

توابع مورد استفاده سمت سرور

Socket():o آن درخواست ارتباط و تعیین نوع اعالمBind():

o دادن یک آدرس پورت سوکتی که باز کرده ایم نسبتListen():

o ارتباطاعالم شروع پذیرش تقاضاهاي:Accept()

oستم عامل تقاضاي معرفی یکی از ارتباطات معلق با استفاده از این تابع از سی:Send(), Receive()

oمبادله داده:Close()

o قطع ارتباط دو طرفه ارسال و دریافت

8

Page 9: Socket programming concepts (Persian)

توابع مورد استفاده سمت مشتري

Socket() :o ارتباطمشخصه یک (یک سوکت ایجاد(Connect() :o سرویس دهندهبرقراري ارتباط با تقاضايSend(), Receive():o هاو دریافت داده ارسالClose() :o ارتباط بصورت دو طرفه قطع.

9

Page 10: Socket programming concepts (Persian)

نحوه ایجاد سوکت

Socket mySocket = new Socket(AddressFamily, SocketType, ProtocolType );

Address Familyمشخص کننده نوع سازمان آدرس دهی است. به عنوان مثالInterNetwork براي آدرس دهی با استفاده ازIPv4 بکار میرود.

SocketTypeمشخص کننده نوع ارتباطات است. دو نوع رایج آن انواعStream وDgram هستند.

Protocolمشخص کننده نوع پروتکل مورد استفاده است. دو نوع رایج آنTCP وUDP هستند.

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

10

Page 11: Socket programming concepts (Persian)

اینترنت از نگاه سوکت

11

هر ماشین در بستر شبکه داراي یک آدرسIP است.بعد از پیدا کردن ماشین مورد نظر سرنوشت بسته مورد نظر چه می شود؟

medellin.cs.columbia.edu

(128.59.21.14)

cluster.cs.columbia.edu

(128.59.21.14, 128.59.16.7, 128.59.16.5, 128.59.16.4)

newworld.cs.umass.edu

(128.119.245.93)

11

Page 12: Socket programming concepts (Persian)

پورت ها

12

Port 0

Port 1

Port 65535

پورت است 65535هر میزبان داراي. بعضی از این پورت ها براي یک تعداد

به عنوان. برنامه کاربردي رزرو شده اند:مثال20,21:FTP23:Telnet80:HTTP

بازه پورت هاي رزرو شده:1023-0

ه بازه پورت هایی که بهتر است استفاد:نشوند65535-49152

سوکت یک واسط براي دریافت داده ارسال داده به یک پورت خاص /از

.فراهم می آورد

12

Page 13: Socket programming concepts (Persian)

Bind تابع

این تابع سوکت را به یک شماره پورت خاص ارتباط می دهد. نحوه فرخوانی درC#

mySocket.Bind(myEndPoint);EndPoint در واقع مشخص کننده یک نوع آدرس یا نقطه پایانی در شبکه

.استنحوه تعریف آن را داریم :

IPEndPoint myEndPoint = new IPEndPoint(IPAddress, Port);IPAddress همان آدرس ماشین سرور است.Port هم شماره پورت مربوط به برنامه مورد نظر بروي ماشین سرور

13

Page 14: Socket programming concepts (Persian)

1 -پایه گذاري ارتباط

ه پایه نیاز ب دیتاگرامبه یاد داشته باشید که براي سوکت هاي از نوع : نکته.گذاري ارتباط نیست

یک ارتباط در واقع بین دو شرکت کننده ایجاد می شود:مت غیرفعالس )Passive :( منتظر دریافت درخواست برقراري ارتباط از

)سرور(سمت فعال میماند سمت فعال)Active :( عال را پایه گذاري فدرخواست ارتباط با سمت غیر

)مشتري. (میکندد بودبعد از اینکه ارتباط برقرار شد این دو سمت کامالً مشابه یکدیگر خواهن:

هر دو میتوانند به ارسال یا دریافت داده بپردازند.هر دو میتوانند ارتباط را خاتمه دهند.

14

Page 15: Socket programming concepts (Persian)

2 -پایه گذاري ارتباط

سرور -سمت غیرفعال

گوش دادن به :1مرحلهدرخواستهاي ورودي

پذیرفتن درخواست :3مرحله تبادل داده :4مرحله

ارتباط پذیرفته شده روي یک.سوکت جدید قرار می گیرد

سوکت قدیمی به گوش دادن براي دریافت درخواست هاي دیگر ادامه

.می دهد

مشتري -سمت فعال

درخواست و پایه :2مرحلهگذاري یک ارتباط

تبادل داده :4مرحله

15

Page 16: Socket programming concepts (Persian)

BeginAcceptو Listenتوابع

تابعListen در واقع همان عمل گوش دادن در سمت غیرفعال را انجام می دهد .:نحوه فرخوانی آن به صورت زیر است

mySocket.Listen(backlog); Backlog :ه تر یا به عبارت ساد. حداکثر طول صف انتظار ارتباطات معلق است

متصل مشخص کننده حداکثر تعداد مشتري هایی که می خواهیم بتوانند به سرور.شوند

تابعAccept از یک عملیات جهت پذیرفتن تقاضاهاي برقراري ارتباط ورودي را آغ:فراخوانی آن را داریمنحوه . می کند

mySocket.BeginAccept(AsyncCallback, Object); AsyncCallback : ،زمانی که یک عمل غیرهمزمان به اتمام میرسدCallBack

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

16

Page 17: Socket programming concepts (Persian)

Connect تابع

حوه ن. این تابع در سمت مشتري براي برقراري ارتباط با سرور فراخوانی می شود:فراخوانی آن را داریم

Socket.Connect(IPAddress, Port); آدرسIP مربوط به ماشین سرور است. شمارهPort مربوط به برنامه کاربردي مورد نظر بروي ماشین سرور است.

17

Page 18: Socket programming concepts (Persian)

BeginReceive تابع

نحوه فراخوانی. تابعی است براي دریافت کردن داده هاي ورودي در هر دو سمت سرور و مشتري :آن را داریم

Socket.BeginReceive( byte[] buffer, int offset, int size, SocketFlags socketFlags, AsyncCallback callback,

Object state )Buffer :بافر ورودي براي بایتهایی که دریافت می شوند.Offset :محلی که ذخیره سازي داده در بافر از آنجا آغاز می شود.Size :تعداد بایتهایی که می خواهیم دریافت نماییم.SocketFlags : یک تعداد پرچم که رفتارهاي ارسال و دریافت داده توسط سوکت را

.مشخص می نمایدAsyncCallback : ،زمانی که یک عمل غیرهمزمان به اتمام میرسدCallBack به یک

.می دهدمتد از قبل تعریف شده ارجاع Object : خواهد بودنگهدارنده وضعیت دریافت داده ها در اینجا.

18

Page 19: Socket programming concepts (Persian)

Closeو Send تابع

تابعSend ا نحوه فراخوانی آن ر. ارسال کننده داده ها به یک سوکت مشخص است:داریم

Socket.Send( byte[] buffer, SocketFlags socketFlags ) Buffer : از نوع ساختار داده بایت و در واقع شامل همان داده هایی است که

.میخواهیم ارسال نماییمSocketFlags : یک تعداد پرچم که رفتارهاي ارسال و دریافت داده توسط

.می نمایدسوکت را مشخص

تابعClose خاتمه دهنده ارتباط است که در هر دو سمت می تواند فرخوانی شود .:نحوه فراخوانی آن بسیار ساده است

Socket.Close();

19

Page 20: Socket programming concepts (Persian)

جمع بندي

تا اینجا مطالبی که در این ارائه آموختیم:مفهوم سوکتانواع سوکت هاي موجود و کاربردهاي آنهادر دو چگونگی برقراري ارتباط بین سرور و مشتري در برنامه نویسی سوکت

UDPو TCPحالت ارتباط انواع توابع موجود برنامه نویسی سوکت و نحوه بکارگیري آنها به زبانC#.Net

20

Page 21: Socket programming concepts (Persian)

ارائه مثال

از در قسمت بعدي به بررسی یک مثال جامع از یک برنامه کاربردي با استفاده.خواهیم پرداخت Visual Studioو محیط #Cبرنامه نویسی سوکت، در زبان

پایان بخش اولبا سپاس

پدرام حسینی[email protected]

21


Recommended