160 likes | 310 Views
مهندسی فناوری اطلاعات. ارائه دهنده دکتر سيد امين حسيني hosseini@um.ac.ir E.mail: Home page: http://hosseini.staffcms.um.ac.ir. فصل هفتم: برنامه نويسي تحت شبكه اينترنت Socket Programming. انواع سوكت و مفاهيم آنها مفهوم سرويسهنده /مشتري توابع مورد استفاده در برنامه سرويسدهنده
E N D
مهندسی فناوری اطلاعات ارائه دهنده دکتر سيد امين حسيني hosseini@um.ac.irE.mail: Home page:http://hosseini.staffcms.um.ac.ir
فصل هفتم: برنامهنويسي تحت شبكه اينترنت Socket Programming • انواع سوكت و مفاهيم آنها • مفهوم سرويسهنده /مشتري • توابع مورد استفاده در برنامه سرويسدهنده • توابع مورد استفاده در برنامه مشتري • معرفي زبان جاوا • آشنايي با اپلت هدفهاي آموزشي :
روال برقراري ارتباط بين دو برنامه از راه دور: الف) درخواست برقراري ارتباط با كامپيوتري خاص با IP مشخص و برنامهاي روي آن كامپيوتر با آدرس پورت مشخص = درخواست فراخواني تابع سيستمي socket() ب) مبادله دادهها با توابع send() و recv() در صورت برقراري ارتباط ج) اتمام ارتباط با فراخواني تابع close()
انواع سوكت و مفاهيم آنها • سوكتهاي نوع استريم= سوكتهاي اتصال گراConnection Oriented • سوكتهاي نوع ديتاگرام= سوكتهاي بدون اتصالConnectionless سوكتهاي نوع استريم مبتني بر پروتكل TCP لزوم برقراري يك اتصالقبل از مبادله دادهها به روش دستتكاني سهمرحلهاي سوكتهاي نوع ديتاگرام مبتني بر پروتكل UDP مبادله داده بدون نياز به برقراري هيچ ارتباط و يا اتصالي و عدم تضميني بررسيدن دادهها، صحت دادهها و ترتيب دادهها
سوكتهاي نوع استريم كاربرد: پروتكل انتقال فايلFTP پروتكل انتقال صفحات ابرمتنHTTP پروتكل انتقال نامه هايالكترونيكي SMTP سوكتهاي نوع ديتاگرام كاربرد: انتقال صدا و و تصوير يا سيستمDNS
سوكت يك مفهوم انتزاعي از تعريف ارتباط در سطح برنامهنويسي • اعلام آمادگي جهت مبادله دادهها نوسط برنامهنويس به سيستم عامل بدون درگير شدن با جزئيات پروتكل TCP يا UDPو تقاضاي ايجاد فضا و منابع مورد نياز جهت برقراري يك ارتباط از سيستمعامل سوكتsocket
سرويس دهنده /مشتري تعريف عمومي: ): پروسه ايست نيازمند اطلاعاتclient)مشتري :(serverسرويس دهنده( پروسه اي است براي به اشتراك گذاشتن اطلاعات و تحويل اطلاعات به مشتري
برنامه سمت سرويس دهندهServer Side برنامهاي است كه روي ماشين سرويسدهنده نصب ميشود و منتظر است تا تقاضائي مبني بر برقراري يك ارتباط دريافت كرده و پس از پردازش آن تقاضا ، پاسخ مناسب را ارسال نمايد بنابراين در حالت كلي برنامه سرويس دهنده شروع كننده يك ارتباط نيست.
برنامه هاي سمت مشتريClient Side برنامه هاي سمت مشتريبنابر نياز، اقدام به درخواست اطلاعات مينمايند. تعداد مشتريها روي ماشينهاي متفاوت يا حتي روي يك ماشين ميتواند متعدد باشد و ليكن معمولاً تعداد سرويس دهنده ها يكي است.(مگر در سيستمهاي توزيعشده) Request For Information ارتباط بين سرويس دهنده و مشتري Client Server Returned Information
الگوريتم كار برنامه سمت سرويسدهنده الف) Socket():ااعلام درخواست ارتباط و تعيين نوع آن (TCPيا (UDP از سيستمعامل با اين تابع سيستمي ب) Bind(): نسبت دادن يك آدرس پورت سوكتي كه باز كرده ايم :Listen()ج) اعلام شروع پذيرش تقاضاهاي ارتباط TCP با اين تابع به سيستم عامل و تعين حداكثر تعداد پذيرش ارتباط TCP د):Accept() تقاضاي معرفي يكي از ارتباطات معلقبا استفاده از اين تابع از سيستم عامل ه):Send(),recv()مبادله داده و) :Close() قطع ارتباط دو طرفه ارسال و دريافت ز) :Shutdown()قطع يك طرفه يكي از عمليات ارسال يا دريافت
ايجاد يك سوكت (مشخصه يك ارتباط ) :Socket()الف) تقاضاي برقراري ارتباط با سرويسدهنده:Connect()ب) ارسال و دريافت داده ها:Send(),recv()ج) قطع ارتباط بصورت دو طرفه .:Close()د) :Shutdown()قطع ارتباط بصورت يك طرفه. الگوريتم كار برنامه سمت مشتري
socketتابع () توابع مورد استفاده در برنامه سمت سرويسدهنده (مبتني بر(TCP Bind() تابع Listen() تابع Accept() تابع Send(),recv() توابع Close(),shutdown() توابع
(TCPتوابع مورد استفاده در برنامه مشتري (مبتني بر پروتكل socketتابع () Connect()تابع Send(),recv() توابع Close(),shutdown() توابع
<?php ignore_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); ?>
<?php set_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'); ?>