Socket programming concepts (Persian)
-
Upload
pedram-hosseini -
Category
Education
-
view
252 -
download
13
description
Transcript of Socket programming concepts (Persian)
مفاهیم برنامه نویسی سوکتپدرام حسینی :تهیه و تنظیم
گروه مهندسی کامپیوتر، دانشگاه گیالن[email protected]
فهرست مطالب
سوکت چیست؟انواع سوکت ها و مفاهیم آنهاانواع ارتباطات سوکتسمت سرورتوابع مورد استفاده درتوابع مورد استفاده در سمت مشتري ارائه یک مثال جامع به زبانC#.Net
تمامی کدهاي برنامه نویسی در این ارائه به زبان : تذکرC#.Net هستند.
2
سوکت چیست؟
سوکت در واقع یک واسط میان برنامه کاربردي و شبکه است.برنامه کاربردي سوکت را ایجاد می نماید.سوکت بیان کننده شیوه برقراري ارتباط است نوع.
سوکت از نوعTCP استاتصال گرا ارتباطی. سوکت از نوعUDP است غیرمتصلارتباطی.
پس از یکبار پیکربندي کردن سوکت، برنامه کاربردي قادر خواهد بود:داده را براي تبادل در شبکه در اختیار سوکت قرار دهد. داده اي را که توسط میزبانی دیگر در شبکه براي سوکت ارسال شده را
.دریافت نماید
3
:انواع سوکتکاربرد پروتکل انتقال فایل FTP – نوعTCP
پروتکل انتقال صفحات ابرمتن HTTP – نوعTCP
الکترونیکی پروتکل انتقال نامه هايSMTP – نوعTCP
و تصویر یا سیستمانتقال صدا وDNS – نوعUDP
1 -انواع اصلی سوکت ها
جریان گراسوکت o سوکتTCPoارتباط قابل اعتمادoترتیب ارسال تضمین شده استo استاتصال گرا.
دیتاگرامسوکت o سوکتUDPoارتباط غیر قابل اعتمادo نمی شودترتیب ارسال تضمین.oغیر متصل است.
4
2 -انواع اصلی سوکت ها
TCP نوع استریم مبتنی بر پروتکلسوکتهاي به ا قبل از مبادله داده ه یک اتصالبرقراري لزوم
روش دست تکانی سه مرحله اي
App
socket3 2 1
Dest.
App
socket3 2 1
D1
D3
D2
UDPل نوع دیتاگرام مبتنی بر پروتکسوکتهاي و یا بدون نیاز به برقراري هیچ ارتباطداده مبادله
ت داده ها، صحرسیدن برتضمینی عدم و یاتصالداده ها و ترتیب داده ها
5
TCPنوع –ارتباطات سوکت 6
UDPنوع –ارتباطات سوکت 7
توابع مورد استفاده سمت سرور
Socket():o آن درخواست ارتباط و تعیین نوع اعالمBind():
o دادن یک آدرس پورت سوکتی که باز کرده ایم نسبتListen():
o ارتباطاعالم شروع پذیرش تقاضاهاي:Accept()
oستم عامل تقاضاي معرفی یکی از ارتباطات معلق با استفاده از این تابع از سی:Send(), Receive()
oمبادله داده:Close()
o قطع ارتباط دو طرفه ارسال و دریافت
8
توابع مورد استفاده سمت مشتري
Socket() :o ارتباطمشخصه یک (یک سوکت ایجاد(Connect() :o سرویس دهندهبرقراري ارتباط با تقاضايSend(), Receive():o هاو دریافت داده ارسالClose() :o ارتباط بصورت دو طرفه قطع.
9
نحوه ایجاد سوکت
Socket mySocket = new Socket(AddressFamily, SocketType, ProtocolType );
Address Familyمشخص کننده نوع سازمان آدرس دهی است. به عنوان مثالInterNetwork براي آدرس دهی با استفاده ازIPv4 بکار میرود.
SocketTypeمشخص کننده نوع ارتباطات است. دو نوع رایج آن انواعStream وDgram هستند.
Protocolمشخص کننده نوع پروتکل مورد استفاده است. دو نوع رایج آنTCP وUDP هستند.
ا به کجا اینکه داده ها از کجا دریافت و ی. تا اینجا ما تنها یک سوکت را تعریف کردیم: نکته مهم.ارسال میشوند هنوز مشخص نشده است
10
اینترنت از نگاه سوکت
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
پورت ها
12
Port 0
Port 1
Port 65535
پورت است 65535هر میزبان داراي. بعضی از این پورت ها براي یک تعداد
به عنوان. برنامه کاربردي رزرو شده اند:مثال20,21:FTP23:Telnet80:HTTP
بازه پورت هاي رزرو شده:1023-0
ه بازه پورت هایی که بهتر است استفاد:نشوند65535-49152
سوکت یک واسط براي دریافت داده ارسال داده به یک پورت خاص /از
.فراهم می آورد
12
Bind تابع
این تابع سوکت را به یک شماره پورت خاص ارتباط می دهد. نحوه فرخوانی درC#
mySocket.Bind(myEndPoint);EndPoint در واقع مشخص کننده یک نوع آدرس یا نقطه پایانی در شبکه
.استنحوه تعریف آن را داریم :
IPEndPoint myEndPoint = new IPEndPoint(IPAddress, Port);IPAddress همان آدرس ماشین سرور است.Port هم شماره پورت مربوط به برنامه مورد نظر بروي ماشین سرور
13
1 -پایه گذاري ارتباط
ه پایه نیاز ب دیتاگرامبه یاد داشته باشید که براي سوکت هاي از نوع : نکته.گذاري ارتباط نیست
یک ارتباط در واقع بین دو شرکت کننده ایجاد می شود:مت غیرفعالس )Passive :( منتظر دریافت درخواست برقراري ارتباط از
)سرور(سمت فعال میماند سمت فعال)Active :( عال را پایه گذاري فدرخواست ارتباط با سمت غیر
)مشتري. (میکندد بودبعد از اینکه ارتباط برقرار شد این دو سمت کامالً مشابه یکدیگر خواهن:
هر دو میتوانند به ارسال یا دریافت داده بپردازند.هر دو میتوانند ارتباط را خاتمه دهند.
14
2 -پایه گذاري ارتباط
سرور -سمت غیرفعال
گوش دادن به :1مرحلهدرخواستهاي ورودي
پذیرفتن درخواست :3مرحله تبادل داده :4مرحله
ارتباط پذیرفته شده روي یک.سوکت جدید قرار می گیرد
سوکت قدیمی به گوش دادن براي دریافت درخواست هاي دیگر ادامه
.می دهد
مشتري -سمت فعال
درخواست و پایه :2مرحلهگذاري یک ارتباط
تبادل داده :4مرحله
15
BeginAcceptو Listenتوابع
تابعListen در واقع همان عمل گوش دادن در سمت غیرفعال را انجام می دهد .:نحوه فرخوانی آن به صورت زیر است
mySocket.Listen(backlog); Backlog :ه تر یا به عبارت ساد. حداکثر طول صف انتظار ارتباطات معلق است
متصل مشخص کننده حداکثر تعداد مشتري هایی که می خواهیم بتوانند به سرور.شوند
تابعAccept از یک عملیات جهت پذیرفتن تقاضاهاي برقراري ارتباط ورودي را آغ:فراخوانی آن را داریمنحوه . می کند
mySocket.BeginAccept(AsyncCallback, Object); AsyncCallback : ،زمانی که یک عمل غیرهمزمان به اتمام میرسدCallBack
.می دهدبه یک متد از قبل تعریف شده ارجاع Object : وضعیت درخواست ورودي خواهد بوددر اینجا نگهدارنده.
16
Connect تابع
حوه ن. این تابع در سمت مشتري براي برقراري ارتباط با سرور فراخوانی می شود:فراخوانی آن را داریم
Socket.Connect(IPAddress, Port); آدرسIP مربوط به ماشین سرور است. شمارهPort مربوط به برنامه کاربردي مورد نظر بروي ماشین سرور است.
17
BeginReceive تابع
نحوه فراخوانی. تابعی است براي دریافت کردن داده هاي ورودي در هر دو سمت سرور و مشتري :آن را داریم
Socket.BeginReceive( byte[] buffer, int offset, int size, SocketFlags socketFlags, AsyncCallback callback,
Object state )Buffer :بافر ورودي براي بایتهایی که دریافت می شوند.Offset :محلی که ذخیره سازي داده در بافر از آنجا آغاز می شود.Size :تعداد بایتهایی که می خواهیم دریافت نماییم.SocketFlags : یک تعداد پرچم که رفتارهاي ارسال و دریافت داده توسط سوکت را
.مشخص می نمایدAsyncCallback : ،زمانی که یک عمل غیرهمزمان به اتمام میرسدCallBack به یک
.می دهدمتد از قبل تعریف شده ارجاع Object : خواهد بودنگهدارنده وضعیت دریافت داده ها در اینجا.
18
Closeو Send تابع
تابعSend ا نحوه فراخوانی آن ر. ارسال کننده داده ها به یک سوکت مشخص است:داریم
Socket.Send( byte[] buffer, SocketFlags socketFlags ) Buffer : از نوع ساختار داده بایت و در واقع شامل همان داده هایی است که
.میخواهیم ارسال نماییمSocketFlags : یک تعداد پرچم که رفتارهاي ارسال و دریافت داده توسط
.می نمایدسوکت را مشخص
تابعClose خاتمه دهنده ارتباط است که در هر دو سمت می تواند فرخوانی شود .:نحوه فراخوانی آن بسیار ساده است
Socket.Close();
19
جمع بندي
تا اینجا مطالبی که در این ارائه آموختیم:مفهوم سوکتانواع سوکت هاي موجود و کاربردهاي آنهادر دو چگونگی برقراري ارتباط بین سرور و مشتري در برنامه نویسی سوکت
UDPو TCPحالت ارتباط انواع توابع موجود برنامه نویسی سوکت و نحوه بکارگیري آنها به زبانC#.Net
20
ارائه مثال
از در قسمت بعدي به بررسی یک مثال جامع از یک برنامه کاربردي با استفاده.خواهیم پرداخت Visual Studioو محیط #Cبرنامه نویسی سوکت، در زبان
پایان بخش اولبا سپاس
پدرام حسینی[email protected]
21