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

16
ت ک و س ی س ی و ن ه م ا رن بSocket Programming ی چ ک ن ی ع د ون ن

Upload: navid-einakchi

Post on 14-Jan-2017

231 views

Category:

Education


6 download

TRANSCRIPT

Page 1: برنامه سازی شبکه: برنامه نویسی سوکت در سی شارپ

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

چی عینک نوید

Page 2: برنامه سازی شبکه: برنامه نویسی سوکت در سی شارپ

شبکه برنامه

شده تشکیل بخش دو از شبکه برنامه هر) دهنده ) خدمات سرور

دارد ▪ مشخصی آدرساست ▪ درخواست منتظر

) خدمات ) خواهان مشتریندارد ▪ مشخص آدرسدهد ▪ می سرور به را خود درخواست

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

Page 3: برنامه سازی شبکه: برنامه نویسی سوکت در سی شارپ

سرور ) شبکه برنامه (TCPگامهای

سوکت ایجاد آدرس دادن نسبت تقاضا مدیرت و تقاضا برای انتظار تقاضا پذیرش

تقاضا ▪ انجامدریافت ▪ و ارسالتقاضا ▪ پایان

تقاضا کردن صف و انتظار پایان

Page 4: برنامه سازی شبکه: برنامه نویسی سوکت در سی شارپ

مشتری ) شبکه برنامه (TCPگامهای

سوکت ایجاد سرور به تقاضا ارسال

تقاضا ▪ انجام تقاضا پایان

شبکه برنامه از مثال

Page 5: برنامه سازی شبکه: برنامه نویسی سوکت در سی شارپ

Clientتعامل ServerSocket Socket

Bind

Listen

Connect Msg

Accept msg

Send/Receive

Close Close

Accept

Connect

Send/Receive

Page 6: برنامه سازی شبکه: برنامه نویسی سوکت در سی شارپ

مفاهیم

سوکت System.Net.Sockets.Socket

به توان می آن طریق از که انتزاعی مفهمومییافت دسترسی شبکه به مربوط عملیاتهای

IPAddress آدرس که ای داده .IPنوع کند می نگهداری خود در راIPEndPoint

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

Page 7: برنامه سازی شبکه: برنامه نویسی سوکت در سی شارپ

سوکت ایجاد

Socket(AddressFamily, SocketType, ProtocolType)

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

TCP/IP: باشد می زیر بصورت کنیم کار▪AddressFamily :مقدار ب: InterNetworkبا▪SocketType:

گرا )▪ اتصال حالت مقدار( TCPبرای Streamبااتصال )▪ بدون حالت مقدار( UDPبرای Dgramبا▪ProtocolType : مقدار IPبا

Page 8: برنامه سازی شبکه: برنامه نویسی سوکت در سی شارپ

)... ادامه ) سوکت ایجاد

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

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

Page 9: برنامه سازی شبکه: برنامه نویسی سوکت در سی شارپ

Bindتابع

: سوکت به آدرس دادن نسبت برای Bind(IPEndPoint ep)

نوع از متغیر یک تابع و IPEndPointاین گیرد می. دهد می نسبت سوکت به را آن در موجود آدرس

Page 10: برنامه سازی شبکه: برنامه نویسی سوکت در سی شارپ

IPEndPoint

به مقداردهی زیر IPEndPointبرای بصورت: گردد می عمل

نوع از متغییر یک آدرس IPAddressابتدا و تعریفIP تابع از استفاده می Parseبا داده نسبت آن به

شود: IPAddress▪ Parse("127.0.0.1");

متغیر بهمراه پورت شماره به IPAddressسپس.IPEndPointمتغیر شود می داده نسبت

Page 11: برنامه سازی شبکه: برنامه نویسی سوکت در سی شارپ

Listenتابع

اتصال تقاضاهای به سوکت دادن گوش برای Listen(int backlog)

صف اندازه آن در که گیرد می متغیر یک تابع این. گردد می مشخص انتظار

تقاضاهای تمامی سیستم تابع این زدن صدا بانگهداری انتظار صف در را سوکت این به مربوط

. کند می

Page 12: برنامه سازی شبکه: برنامه نویسی سوکت در سی شارپ

Acceptتابع

اتصال پذیرش برای Socket Accept()

تقاضاهای از یکی س{یستم تاب{ع ای{ن زدن ص{دا ب{اسوکت ی{ک آ{ن برای برداشت{ه را شده ص{ف ب{ه اتص{ال

. گرداند برمی ما برنامه به را سوکت و کرده ایجاد تقاضا انجام مرحل{ه برای توان م{ی س{وکت ای{ن از

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

! شود می هنگ برنامه نباشد صف در تقاضایی اگر

Page 13: برنامه سازی شبکه: برنامه نویسی سوکت در سی شارپ

Closeتابع

سوکت کار پایان Close()

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

Page 14: برنامه سازی شبکه: برنامه نویسی سوکت در سی شارپ

Connectتابع

سرور به اتصال تقاضای Connect(IPEndPoint remoteEP)

یک که خواهیم می سیستم از تابع این زدن صدا بادر شده مشخص آدرس به اتصاف تقاضا

remoteEP. نماید ارسال. گردد می طرفه سه دستدهی انجام باعث اینکار

Page 15: برنامه سازی شبکه: برنامه نویسی سوکت در سی شارپ

تقاضا انجام

ارسال Int Send(byte[] buffer)

دریافت Int Receive(byte[] buffer)

. بدین باشد می شدنی بالک پردازش یک دریافتبرنامه نباشد دریافت برای ای داده اگر که معنی

. گردد می هنگ

Page 16: برنامه سازی شبکه: برنامه نویسی سوکت در سی شارپ

تقاضا انجام به مربوط توابع رشته ارسال :asendبرای کافیست

srs.Send(Encoding.UTF8.GetBytes(asend));

: کافیست رشته همان دریافت برایByte[] buf = new Byte[256];srs.Receive(buf);a = Encoding.UTF8.GetString(buf);