بازگشت   کلوب آموزش ایرانیان > انجمن برنامه نویسی و طراحی سایت > سایر زبان های برنامه نویسی > ++C

پاسخ
 
LinkBack ابزارهای موضوع نحوه نمایش
قدیمی 12-05-2008, 05:41 AM   #1 (permalink)
من آن آواره بشكسته بالم

 
Mr . Saeed آواتار ها
 
Hexxagon Champion!
تاریخ عضویت: Jul 2008
محل سکونت: شــيـــراز
سن: 24
نوشته ها: 10,843
سپاس گذاری: 3,702
سپاس گذاری شده 8,396 در 4,702 پست
Blog Entries: 4
پیش فرض with C++ Socket Programing

with C++ Socket Programing
with C++ Socket Programing
توابع API در C :
GETHOST BY NAME – NAME IP ADDRES
GET HOST BY ADDRES – IP ADDRES AQME

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



شماره پورت :
16 بیت صحیح است . برای ارتباط نیاز به آدرس IP و شماره پورت می باشد.

در TCP ارتباط تعریف می شود با


Unix در


در unix 1024 پورت اول برای هر دو نوع پورتکلها است و weu known ports نامیده می شود.



مدل tcp مبتنی بر اتصال است
قابل اطمینان smtr،http ،telnet ،ftp
رشته ای است (مسیل و نهر) (transmission control protocol / internet protocol)


مدلp ud غیر قابل اتصال
غیر قابل اطمینان tftp، nfs
دیتا گرامی است . ( بر اساس packet) (user datagram protocol) چکسام










مفهوم socket :
فرض کنید در محیطی کار میکنید که فقط با فایل ها سر و کار داریم ,در چنین سیستمی ورودی خروجی هم (I/O) میتواند تو سط سیستم فایلها مدیریت شود.به عنوان مثال, صفحه نمایش را همانند یک فایل متنی در نظر بگیرید برای ا ینکه اطلاعا ت را در صفحه نمایش بفرستیم باید فایل را از نوع نوشتنی باز کنیم و اگر محتوای اشاره گر فایل خالی نبود یعنی سیستم عامل به فایل حافظه اختصاص داد میتوان در فایل اطلاعات را نوشت.
میتوانیم این ساختار را برای ارتباط دو بر نامه کاربردی روی دو کامپیوتر گسترش دهیم , یعنی باید یک ارتباط با یک کامپیوترروی شبکه) با یک آدرس Ip خاص (و برنامه ای خاص روی کامپیوتر با آدرس پورت مشخص بگشاییم.
سوکت ، ترکيبی از يک آدرس IP و پورت TCP ويا پورت UDP است . يک برنامه ، سوکتی را با مشخص نمودن آدرس IP مربوط به کامپيوتر و نوع سرويس ( TCP برای تضمين توزيع اطلاعات و يا UDP) و پورتی که نشاندهنده برنامه است، مشخص می نمايد. آدرس IP موجود در سوکت ، امکان آدرس دهی کامپيوتر مقصد را فراهم و پورت مربوطه ، برنامه ای را که داده ها برای آن ارسال می گردد را مشخص می نمايد.درزیر نام چند پروتکل برنامه کاربردی و آدرس پورت آنها مشخص شده است:




بسیاری از برنامه های کاربردی تحت شبکه از یک شماره پورت خاصی برای ارسال و در یافت اطلاعات استفاده میکنند.به عنوان مثال برنامه فرستادن ایمیل به پورت 25 گوش میکند , ما در برنامه های کاربردی خود می توانیم از پورت دلخواه استفاده کنیم , به عنوان مثال شماره سوکت در یک برنامه تحت شبکه میتواند :2000 127.67.78.97 باشد که قالب کلی این آدرس به صورت Ip:Port میباشد .
مفهوم Sap :
در سمت client & server بسته های شکسته شده برنامه های کاربردی مربوطه با عبور از پورت مربوطه از لایه های دیگر شبکه عبور میکنند.این شماره پورت واسط بین لایه برنامه کاربردی و انتقال در حقیقت همان Sap میباشد .به شکل زیر نگاه کنید.



بنابراین ارتباط بین دو برنامه تحت شبکه مبادله اتلاعات بین دو نقطه TSap روی دو کامپیوتر در شبکه میباشد.همانطور که میتوان چندین فابل را همزمان باز نگه داشت در یک برنامه تحت شبکه همزمان میتوان چندین ارتباط باز و فعال داشته باشیم .مثلا از برنامه Yahoo messenger استفاده میکنیم در حقیقت ما از برنامه سمت client آن استفاده میکنیم و در server yahoo برنامه ای به پورتی که برنامه client اطلاعات را به آن میفرستد گوش میدهد.
انواع سوکت :
سوکت ها به طور کلی به 2 نوع میباشند:
1- سوکت های نوع stream که از نوع اتصالگرا هستند , یعنی باید قبل از مبادله اطلا عات یک اتصال به صورت لوله فرضی بین client و server بوجود میاید, این نوع سوکت ها بر مبنای tcp هستند.
2- سوکت های datagramکه از نوع بدون اتصال هستند , یعنی نیاز به برقراری ارتباط فرضی ندارند , پس هیچ امنیتی در این نوع ارتباط وجود ندارد, این نوع سوکت ها بر مبنایudp هستند.
همواره باید به این نکته توجه کرد که در برنامه های تحت شبکه ارتباطات دو طرفه میباشد, یک برنامه ای که در سمت سرویس گیرنده اجرا میشود و دیگری در سمت سرویس دهنده.برنامه نویسی سوکت مربوط به لایه کاربردی میباشد و انتقال بسته های اطلاعاتی به لایه های دگر بر عهده سیستم عامل میباشد.
قبل از وارد شدن در مقوله برنامه نویسی سوکت بد نیست الگوریتم کل کاری که بایستی در سمت سرویس دهنده همچنین در سمت مشتری انجام شود را بررسی نماییم :

الف) یک سوکت را که مشخصه یک ارتباط است بوجود بیاوریم . این قسمت باید نوع ارتباط خود با سیستم عامل را (tcp یا upd ) معرفی نماییم . این کار در محیط یونیکس توسط تابع ()socket انجام می گیرد .

ب) به سوکتی که باز کرده اید آدرس پورت نسبت می دهیم بدین صورت تمام بسته های Tcp یا upd ای که آدرس پورت مقصدشان با شماره پورت برنامه شما مطابقت دارد به سمت برنامه شما فرستاده می شود این کار توسط تابع سیستمی() bind انجام می شود.به این پورت ، پورت منفعل می گویند .



ج) حال باید به سیستم عامل بگوییم کارش را برای پذیرش تقاضاهای ارتباط شروع نماید.این کار توسط تابع سیستمی ()listen انجام می شود . چون ممکن است تعداد تقاضاهای ارتباط زیاد باشد باید حد اکثر تعداد ارتباط tcp را که می توان پذیرفت مشخص کرد و برای آن بافر در نظر گرفت.






د) در پایان باید از سیستم عامل بخواهیم که یکی از ارتباطات معلق را به برنامه شما معرفی کند . این کار توسط تابع () accept انجام می گیرد.


ه) از دستورات () send و ()recv برای مبادله داده استفاده می شود.
و) در پایان باید ارتباط خاتمه یابد . به دو صورت است:




در برنامه مشتری بایستی اعمال زیر را انجام داد :
الف) یک سوکت بوجود بیاوریم
ب) نیازی نیست مانند سرویس دهنده به سوکت خود آدرس پورت نسبت دهیم یعنی لزومی به استفاده از دستور bind نیست چرا که برنامه سمت client منتظر تقاضای دیگران نیست بلکه خودش متقاضی برقراری ارتباط است . بنا بر این با تابع connect تقاضا را به سمت server می فرستیم .
ج) از توابع ()send یا ()recv برای ارسال و در یافت داده اقدام کنید .
د) ارتباط را با توابع close یا shut down می بندیم .



توابع مورد استفاده در socket programming در :C
* توابع socket غیر واقعی :
Ret = parse _net work _args (args & argv & host & port &errmes)
تنظیمات مربوط به شبکه را انجام می دهد و ویرایش می کند. به دنبال host و port می گردد و آنها را منتقل می کند . در صورت موفقیت صفررا برمی گرداند.
**قسمت :server

1)-Port _sk = socket(af_inet ,sock_stream ):

2)-Port _sk = tcp _passive _ open (port)
در قسمت server اجرا می شود.
Port = تعداد rort هایی که به کار می رود .
است . Port- sk توصیفگر socket
3)-Bind (polt _ sk, &bind_ddr , addr _lenl);

4)- Client _sk = accept (port _sk , &bind _ addr ,&lenl);

:client قسمت ***
1)-Serr_ sk = tcp _active_open (host ,port)
Host = نام ماشین server
Port = شماره پورتی که به کار می رود
Server-sk = توصیفگر socket است .
آدرس IP و HOST پیدا می شود :
Host Ip = gethost by name(host name);
2) Ser v _sk = secket (af _ inetو sock _ stream;);
3) connect( ser v _skو &bind _addr و addr _len);
سوکت Serv _sk می تواند برای صحبت با سرور به کار رود .
Header files های اصلی در زبان c برای برنامه نویسی socket :

.<sys/ typas.h> لازمه انواع داده ای است
.<errno.h> ها می باشد error شماره
.<sys/sochet.n> و سیستمی را شامل میباشد socke ساختارها و ثابت های
.<netdb.h.h> ساختارهای مربوطه به شبکه ای را شامل می باشد
.<netinet/in.h > را شامل می شود socketتوابع مربوط .<arpa/inet.h> توابع کاربردی را شامل می باشد
توابع مدیریت داده در شبکه :
IP و نام dns یک host را بر می گردان * get host by name -
نام service و پروتکل را بر می گرداند. * get serv by name -
نام host را در شبکه محلی بر می گرداند. * get host name -
* get server by name get serv by port get servent
* getproto by name get proto by number get protobyeat
* get net by name get net by add get net ent

مقایسه ارسال و دریافت داده ها به روش : udp
روال در هر دو برنامه سمت client ،server به یک شکل است :
الف ) یک سوکت از نوع دیتا گرام ایجاد کنید . این کار با فراخوانی تابع ()socket با پارامتر sock-dgram انجام می شود
ب) با تابع ()bind به سکوت ایجاد شده آدرس پورت مورد نظرتان را نسبت دهید.
ج ) حال می توانید منتظر دریافت و یا ارسال داده ها باشید ( در دریافت آدرس برنامه مبداء ( آدرس ip و port ) مشخص می گردد و ارسال امکان پذیر است).

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


د) سوکت ایجاد شده را ببندید .


نتیجه گیری:

بر اساس تمام برنامه های کاربردی تحت شبکه لایه چهارم مفهومی به نام سوکت است . این مفهوم به منظور برقراری ارتباط برنامه های تحت شبکه و تبادل جریان داده ها بین پروسه ها ابداع شد . لذا این مقاله نقطه آغازی برای همه برنامه نویسانی خواهد بود که به نحوی مجبور خواهند شد برنامه کاربردی تحت شبکه اینترنت بنویسند
Mr . Saeed آنلاین نیست.   پاسخ با نقل قول
2کاربر زیر از آقا/خانم Mr . Saeedبه خاطر پست مفیدش سپاس گذاری کردند:
پاسخ

علاقه مندی ها (Bookmarks)

برچسب ها
programing, socket

ابزارهای موضوع
نحوه نمایش

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

BB code هست فعال
شکلک ها فعال است
کد [IMG] فعال است
کد HTML غیر فعال است
Trackbacks are فعال
Pingbacks are فعال
Refbacks are فعال



اکنون ساعت 05:38 AM برپایه ساعت جهانی (GMT - گرینویچ) +4.5 می باشد.


Design By: Saeed & Mohammad
Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO
هرگونه کپی برداری بدون ذکر منبع پیگرد قانونی دارد.

Page Rank Check