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

Post on 03-Jan-2016

63 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

مهندسی فناوری اطلاعات. ارائه دهنده دکتر سيد امين حسيني hosseini@um.ac.ir E.mail: Home page: http://hosseini.staffcms.um.ac.ir. فصل هفتم: برنامه ‌ نويسي تحت شبكه اينترنت Socket Programming. انواع سوكت و مفاهيم آنها مفهوم سرويس‌هنده /مشتري توابع مورد استفاده در برنامه سرويس‌دهنده - PowerPoint PPT Presentation

TRANSCRIPT

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

ارائه دهنده

سيد امين حسينيدکتر hosseini@um.ac.ir E.mail:

Home page: http://hosseini.staffcms.um.ac.ir

نويسي تحت شبكه اينترنتفصل هفتم: برنامه

Socket Programming

انواع سوكت و مفاهيم آنها مفهوم سرويس هنده /مشتري توابع مورد استفاده در برنامه سرويس دهنده توابع مورد استفاده در برنامه مشتري معرفي زبان جاوا آشنايي با اپلت

: هدفهاي آموزشي

روال برقراري ارتباط بين دو برنامه از راه :دور

مشخص و IPالف( درخواست برقراري ارتباط با كامپيوتري خاص با برنامه اي روي آن كامپيوتر با آدرس پورت مشخص = درخواست

)(socketفراخواني تابع سيستمي

در صورت برقراري ارتباط )(recv و )(sendب( مبادله داده ها با توابع

)(closeج( اتمام ارتباط با فراخواني تابع

انواع سوكت و مفاهيم اآنه

Connection Oriented اسوكتهاي اتصال گر= سوكتهاي نوع استريم •Connectionless سوكتهاي بدون اتصال= سوكتهاي نوع ديتاگرام•

يك لزوم برقراري TCPسوكتهاي نوع استريم مبتني بر پروتكل اي مرحله تكاني سه ها به روش دست قبل از مبادله داده اتصال

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

ها ها و ترتيب داده ها، صحت داده داده

سوكتهاي نوع ديتاگرام

كاربرد:

و تصوير انتقال صدا و DNSيا سيستم

سوكتهاي نوع استريم

كاربرد:

FTP پروتكل انتقال فايل

پروتكل انتقال صفحات ابرمتنHTTP

پروتكل انتقال نامه هاي الكترونيكي SMTP

سZZوكت يZZك مفهZZوم انZZتزاعي از تعريZف ارتبZZاط در سZZطح •نويسي برنامه

نويس بZه برنZامه اعالم آمZادگي جهت مبادلZه داده هZا نوسZط • يZا TCPسيسZتم عامZل بZدون درگZير شZدن بZا جزئيZات پروتكZل

UDP ادZاي ايجZراري و تقاضZاز جهت برقZورد نيZابع مZا و منZفض از سيستم عامليك ارتباط

socket سوكت

مشتري سرويس دهنده /

:تعريف عمومي

مشتري(clientپروسه ايست نيازمند اطالعات : (:(serverسرويس دهنده (

پروسه اي است براي به اشتراك گذاشتن اطالعات و تحويل اطالعات به مشتري

Server Side برنامه سمت سرويس دهنده

دهنده نصب ميشود و منتظر اي است كه روي ماشين سرويس برنامهاست تا تقاضائي مبني بر برقراري يك ارتباط دريافت كرده و پس

از پردازش آن تقاضا ، پاسخ مناسب را ارسال نمايد بنابراين در سرويس دهنده شروع كننده يك ارتباط نيستحالت كلي برنامه .

Client Side برنامه هاي سمت مشتري

ابر نيZاز، اقZدام بZه درخواسZت اطالعZات بنZ برنامZه هZاي سZمت مشZتريمي نمايند.

تعZZداد مشZZتريها روي ماشZZينهاي متفZZاوت يZZا حZZتي روي يZZك ماشZZين تواند متعدد باشد مي

در و ليكن معمZZوًالc تعZZداد سZZرويس دهنZZده هZZا يكي اسZZت .)مگر سيستم هاي توزيع شده(

Client Server

Request For Information

Returned Information

ارتباط بين سرويس دهنده و مشتري

دهندهالگوريتم كار برنامه سمت سرويس

:()Socketالف) از سيستم عامل UDP )يا TCPاعالم درخواست ارتباط و تعيين نوع آن )ا

با اين تابع سيستمي

:)(Bindب( نسبت دادن يك آدرس پورت سوكتي كه باز كرده ايم

:Listen()ج) با اين تابع به سيستم عامل TCPاعالم شروع پذيرش تقاضاهاي ارتباط

TCPو تعين حداكثر تعداد پذيرش ارتباط

()Accept: د) با استفاده از اين تابع از تقاضاي معرفي يكي از ارتباطات معلق

سيستم عامل

)(Send(),recv: ه)مبادله داده

()Close:و( قطع ارتباط دو طرفه ارسال و دريافت

قطع يك طرفه يكي از عمليات ارسال يا دريافت ()Shutdown:ز(

الگوريتم كار برنامه سمت مشتري

(الف()Socket: ايجاد يك سوكت )مشخصه يك ارتباط (

(ب()Connect: تقاضاي برقراري ارتباط با سرويس دهنده

(ج()Send(),recv:ارسال و دريافت داده ها

(د()Close:. قطع ارتباط بصورت دو طرفه :Shutdown)( قطع ارتباط بصورت يك طرفه.

مبتني بر ) توابع مورد استفاده در برنامه سمت سرويس دهنده)TCP

socketتابع ()

Bind() تابع

Accept() تابع

Listen() تابع

Send(),recv() توابع

Close(),shutdown() توابع

Connect()تابع

socketتابع ()

Send(),recv() توابع

Close(),shutdown() توابع

(TCP توابع مورد استفاده در برنامه مشتري )مبتني برپروتكل

<?phpignore_user_abort(true);set_time_limit(0);

$host = "127.0.0.1";$port = 9898;

$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n");socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1);

socket_bind($socket, $host, $port);socket_listen($socket);

while(true){$spawn = socket_accept($socket);$data = socket_read($spawn, 10240) or die("Could not read input\n");$load = file_get_contents('test.txt');file_put_contents('test.txt',$load.$data);}socket_close($socket);?>

<?phpset_time_limit(0);

$host = "127.0.0.1";$port = 9898;

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("Could not create socket\n");

$connect = socket_connect($socket, $host, $port);$sendmsg = " this is a test ";

socket_write($socket, $sendmsg,strlen($sendmsg));socket_close($socket);

print file_get_contents('test.txt');?>

top related