نمایش نتایج 1 تا 28 از 28

نام تاپیک: برنامه نویسی تحت شبکه socket programming

  1. #1

    برنامه نویسی تحت شبکه socket programming

    [بسم الله الرحمن الرحیم


    عنوان مقاله: with C++‎ Socket Programing

    نویسنده : مهندس محمد صا بر ایرجی
    ایمیل: Shantia20042004@yahoo.com
    کلمات کلیدی:
    IP: در شبکه هر کامپیوتر دارای آدرس میباشد , این عدد آدرس 32 بیتی , به عبارتی 4 قسمتی را IP گویند.
    TCP: یکی از پروتکل های لایه انتقال در شبکه اتصالگرا میباشد
    . (Transmission Control Protocol)
    UDP: یکی از پروتکل های لایه انتقال در شبکه غیراتصالگرا میباشد .
    CLIENT:کامپیوتری که در شبکه سرویس گیرنده است.
    SERVER:کامپیوتری که به در خواستهای سرویس گیرنده ها پاسخ میدهد.
    خلاصه:
    امروزه با گسترش ارتبا طات و انواع شبکه های کامپیوتری جهت انجام امور نیاز مبرم به بر نامه های تحت شبکه از جمله socket programing احساس میشود , لذا در این مقاله به ا رائه مطالبی در این زمینه و ایجاد یک برنامه تحت شبکه(برنامه chat) میپردازم. در حقیقت این مقاله نقطه آغازی برای همه بر نامه نویسانی خواهد بود که به نحوی مجبور خو اهند شد برنامه کار بردی تحت شبکه اینترنت بنویسند.
    برای یک ارتباط نیاز به موارد زیر است :
    • ارتباط ادامه دار
    • زبان مشترک
    • معنای آدرس دهی
    ارتباط عمومی:
    پروتکلها : زبانهای مشترک اینترنت هستند.


    انواع آدرس در اینترنت :
    1- آدرس IP از جنس آدرس فیزیکی 161.12.188.167
    2- نام Domain از جنس آدرس منطقی ex.iraji .com
    آدرس IP آدرس 32 بیتی است که به 4 قسمت تقسیم می گردد محدوده اعداد در هر قسمت از 255- 0
    می باشد.
    5 طبقه بندی برای آدرس IP وجود دارد :



    توابع 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 ) مشخص می گردد و ارسال امکان پذیر است).

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


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


    نتیجه گیری:

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

    منابع :

    * Internet working with tcp/ ip : uelumes I II III Douglas comer , prentice hall , 2000
    * the whole internet user s guide & catalog by ed kroll; oreilly &associates

    * socket Api programmer s refrence 2003

  2. #2
    کاربر دائمی آواتار powerboy2988
    تاریخ عضویت
    تیر 1385
    محل زندگی
    تهران
    سن
    37
    پست
    1,301
    دمت گرم خدا هر چی می خواد بهت بده چقدر من دنباله این مطلب بودم

  3. #3
    کاربر دائمی آواتار powerboy2988
    تاریخ عضویت
    تیر 1385
    محل زندگی
    تهران
    سن
    37
    پست
    1,301
    آقا بازم ممنون اما مطلبتون چند تا مشکل داره
    - عکس ها رو نزاشتید
    - یه جاهایی udp رو pud معرفی کردین
    -....
    یه نگاه دوباره بکنید به متنتون ممنمو میشم
    خوش باشی

  4. #4
    کاربر دائمی آواتار joker
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    اصفهان
    سن
    42
    پست
    1,326
    کتاب مهندسی اینترنت استاد ملکیان را بخونی بهتره ;)

    این لینک را هم ببین:
    http://forums.simorgh-ev.com/viewtop...ghlight=socket

  5. #5
    مرسی از مطلب خوبتون

  6. #6
    کاربر دائمی آواتار amirsadeghi
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    system32\amir.ocx
    پست
    514
    نمونه کد آماده در این رابطه ندارید؟

  7. #7
    اگر در مورد ارسال ویدیو بصورت بلادرنگ در #C هم چیزی میدونین بگین. مرسی ....

  8. #8

    نقل قول: برنامه نویسی تحت شبکه socket programming

    mer30از شما

  9. #9

    نقل قول: برنامه نویسی تحت شبکه socket programming

    با کدوم تابع api میشه با شماره ی یه پورت، اونو بست؟(مثلا پورت 12345)

  10. #10

    Thumbs up نقل قول: برنامه نویسی تحت شبکه socket programming

    سلام
    از دوستان کسی فايل wordمقاله ی بالا رو داره? اگه لطف کنه ممنون ميشم

  11. #11

    نقل قول: برنامه نویسی تحت شبکه socket programming

    سلام من یک کاربر جدید هستم و می خواستم یک برنامه messenger بنویسم. چیزی هم از socket programing سر در نمی آرم. با مفهومات شبکه هم تا حدی آشنا هستم .
    می شه به من بگین اصلا از کجا باید شروع کنم؟ و باید چی کار کنم؟ ممنون

  12. #12

    نقل قول: برنامه نویسی تحت شبکه socket programming

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

  13. #13

    نقل قول: برنامه نویسی تحت شبکه socket programming

    توی بخش جاوا هم هست توی قسمت اعلان هاش
    One machine can do the work of fifty ordinary men. No machine can do the work of one extraordinary man (Elbert Hubbard)

  14. #14

    نقل قول: برنامه نویسی تحت شبکه socket programming

    با سلام
    من برای انجام یک پروژه دانشگاهی نیاز دارم که socket Programming رو یاد بگیرم و یک زبان واشه نوشتن انتخاب کنم شما از بین C++‎ و C#‎ کدوم رو پیشنهاد مکنید؟
    در ضمن اگه مطلب مفیدی راجه به این موضع دارید link بدید ممنون می شم.

  15. #15

    نقل قول: برنامه نویسی تحت شبکه socket programming

    مسلما C#‎ . کتاب برنامه نویسی شبکه از انتشارات دیباگران رو مطالعه کن. جعفرنژاد هم ترجمش کرده . واسه مطلب مفید هم سرچ کن . قبلا مدلای جالبی مطرح شده بود .

  16. #16
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    ایران سرای من است
    پست
    2,655

    نقل قول: برنامه نویسی تحت شبکه socket programming

    نقل قول نوشته شده توسط shantia20042004 مشاهده تاپیک
    [بسم الله الرحمن الرحیم


    عنوان مقاله: with C++‎ Socket Programing

    نویسنده : مهندس محمد صا بر ایرجی
    ایمیل: Shantia20042004@yahoo.com
    کلمات کلیدی:
    IP: در شبکه هر کامپیوتر دارای آدرس میباشد , این عدد آدرس 32 بیتی , به عبارتی 4 قسمتی را IP گویند.
    TCP: یکی از پروتکل های لایه انتقال در شبکه اتصالگرا میباشد
    . (Transmission Control Protocol)
    UDP: یکی از پروتکل های لایه انتقال در شبکه غیراتصالگرا میباشد .
    CLIENT:کامپیوتری که در شبکه سرویس گیرنده است.
    SERVER:کامپیوتری که به در خواستهای سرویس گیرنده ها پاسخ میدهد.
    خلاصه:
    امروزه با گسترش ارتبا طات و انواع شبکه های کامپیوتری جهت انجام امور نیاز مبرم به بر نامه های تحت شبکه از جمله socket programing احساس میشود , لذا در این مقاله به ا رائه مطالبی در این زمینه و ایجاد یک برنامه تحت شبکه(برنامه chat) میپردازم. در حقیقت این مقاله نقطه آغازی برای همه بر نامه نویسانی خواهد بود که به نحوی مجبور خو اهند شد برنامه کار بردی تحت شبکه اینترنت بنویسند.
    برای یک ارتباط نیاز به موارد زیر است :
    • ارتباط ادامه دار
    • زبان مشترک
    • معنای آدرس دهی
    ارتباط عمومی:
    پروتکلها : زبانهای مشترک اینترنت هستند.


    انواع آدرس در اینترنت :
    1- آدرس IP از جنس آدرس فیزیکی 161.12.188.167
    2- نام Domain از جنس آدرس منطقی ex.iraji .com
    آدرس IP آدرس 32 بیتی است که به 4 قسمت تقسیم می گردد محدوده اعداد در هر قسمت از 255- 0
    می باشد.
    5 طبقه بندی برای آدرس IP وجود دارد :



    توابع 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 ) مشخص می گردد و ارسال امکان پذیر است).

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


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


    نتیجه گیری:

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

    منابع :

    * Internet working with tcp/ ip : uelumes I II III Douglas comer , prentice hall , 2000
    * the whole internet user s guide & catalog by ed kroll; oreilly &associates

    * socket Api programmer s refrence 2003

    دوست گرامی از زحمتی که کشیدین باید تشکر کرد چون نحوه گفتار شما میتونیم بگیم تقریبا بصری بود.
    ولی سوالی از شما دارم این توضیحات بر روی چه سیستم عاملی مرتبط کردید.
    دوم اینکه خودتون این توضیحات رو عملیش کردیدن چون توضیح دادن کمی آسونه.

  17. #17

    نقل قول: برنامه نویسی تحت شبکه socket programming

    سلام
    در مورد کلاس TCP کسی می تونه کمکم کنه البته به زبان C#‎

  18. #18

    نقل قول: برنامه نویسی تحت شبکه socket programming

    من مقاله سوکت پروگرمینگ تو سی شارپ و لینوکس رو دارم. اگه کسی لازم داشت پیام بده تا آپلود کنم.

  19. #19
    کاربر دائمی آواتار asefy2008
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    تهران
    سن
    36
    پست
    729

    نقل قول: برنامه نویسی تحت شبکه socket programming

    نقل قول نوشته شده توسط joker مشاهده تاپیک
    کتاب مهندسی اینترنت استاد ملکیان را بخونی بهتره ;)

    این لینک را هم ببین:
    http://forums.simorgh-ev.com/viewtop...ghlight=socket
    سلام دوست من اين لينكي كه گذاشتيد باز نميشه

  20. #20
    کاربر جدید
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    تهران
    پست
    4

    نقل قول: برنامه نویسی تحت شبکه socket programming

    از مطلب مفید شما سپاسگذارم.

  21. #21

    نقل قول: برنامه نویسی تحت شبکه socket programming

    نقل قول نوشته شده توسط joojoo66 مشاهده تاپیک
    من مقاله سوکت پروگرمینگ تو سی شارپ و لینوکس رو دارم. اگه کسی لازم داشت پیام بده تا آپلود کنم.
    سلام
    ممنون میشم اگر مقاله مربوط به C#‎‎‎ را بگذارید
    آخرین ویرایش به وسیله Ahmad_VB : سه شنبه 28 مهر 1388 در 11:39 صبح دلیل: غلط املایی

  22. #22

    نقل قول: برنامه نویسی تحت شبکه socket programming

    ممنون میشم اگه کسی با جاوا در زمینه socket programming کار کرده باشه و به من بگه چه جوری باید شروع کنم ؟

  23. #23

    نقل قول: برنامه نویسی تحت شبکه socket programming

    ممنون میشم اگه کسی با جاوا در زمینه socket programming کار کرده باشه و به من بگه چه جوری باید شروع کنم ؟
    دوست عزيز يه سري كامل آموزش رو توي بخش جاوا گذاشتم
    One machine can do the work of fifty ordinary men. No machine can do the work of one extraordinary man (Elbert Hubbard)

  24. #24
    کاربر دائمی آواتار Cybersilent
    تاریخ عضویت
    تیر 1386
    محل زندگی
    شیراز
    سن
    33
    پست
    392

    نقل قول: برنامه نویسی تحت شبکه socket programming

    من یه مقاله برنامه نویسی سوکت به زبان جاوا و انگلیسی دارم که همه چی رو توش گفته درسته که انگلیسی هست اما میشه چیزی رو که می خواهیم از توش در بیاریم می زارم تا دوستان استفاده کنند
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله Cybersilent : سه شنبه 27 بهمن 1388 در 21:18 عصر

  25. #25
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    مرداد 1389
    محل زندگی
    ارومیه
    سن
    34
    پست
    180

    نقل قول: برنامه نویسی تحت شبکه socket programming

    می خوام برای usb برنامه نویسی کنم با برنامه نویسی شبکه فرقی داره یا نه؟؟

  26. #26
    کاربر دائمی آواتار amirsadeghi
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    system32\amir.ocx
    پست
    514

    نقل قول: برنامه نویسی تحت شبکه socket programming

    نقل قول نوشته شده توسط stahad1 مشاهده تاپیک
    می خوام برای usb برنامه نویسی کنم با برنامه نویسی شبکه فرقی داره یا نه؟؟
    مطمئنا با هم متفاوت هستن دوست عزیز ...

  27. #27

    نقل قول: برنامه نویسی تحت شبکه socket programming

    man ye porozhe bayad dorost konam massanger valii hichii balad nistam ye mesaliii barnameye amadeii aya voojood nadaree aslanm mohem ni ba che zabnii neveshte beshe faght tahde socket bashe ? :

  28. #28
    کاربر دائمی
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    ????? - ??????
    پست
    424

    نقل قول: برنامه نویسی تحت شبکه socket programming

    نقل قول نوشته شده توسط negin rad مشاهده تاپیک
    man ye porozhe bayad dorost konam massanger valii hichii balad nistam ye mesaliii barnameye amadeii aya voojood nadaree aslanm mohem ni ba che zabnii neveshte beshe faght tahde socket bashe ? :
    خواهشن فارسی بنویسید که راحت تر خونده بشه؟

    دوم تو گوگل سرچ کنید از این مثالا زیاده!!

تاپیک های مشابه

  1. help for socket programming
    نوشته شده توسط vbprogrammerx در بخش برنامه نویسی مرتبط با شبکه و وب در VB6
    پاسخ: 16
    آخرین پست: جمعه 13 دی 1392, 22:28 عصر
  2. socket programming
    نوشته شده توسط goddess در بخش شبکه و Networking‌
    پاسخ: 13
    آخرین پست: دوشنبه 27 مهر 1388, 14:42 عصر
  3. socket programming
    نوشته شده توسط tazekaram در بخش توسعه‌ی لینوکس و نرم افزارهای آزاد
    پاسخ: 1
    آخرین پست: جمعه 19 مرداد 1386, 00:50 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •