موضوعات وبسایت : اخبار
سوالات امتحان آیین نامه رانندگی

برنامه نویسی سوکت در c#

برنامه نویسی سوکت در c#

نویسنده : مینا علی زاده | زمان انتشار : 23 بهمن 1400 ساعت 10:29

جهت درج تبلیغات با قیمت مناسب در این سایت میتوانید به آی دی تلگرام زیر پیام دهید

@AlirezaSepand



در این پست یک مطلب با عنوان برنامه نویسی سوکت در c# را مطالعه خواهید کرد.

سلام و وقت بخیر. در این جلسه درمورد مبحث مهم socket صحبت خواهیم کرد. معمولا در داخل یک سیستم یا بهتر بگوییم در داخل یک localhost، برای ارتباط میان 2 تا پروسه ( process )، سه تکنیک وجود دارد.

سوالات امتحان آیین نامه رانندگی

1- Pipes

2-Message queues

3-Shared memory

میتوان دسته بندی بیشتری هم کرد ولی موارد بالا، از همه کلاسیک تر و عام تر هستند. اما در شبکه چطور 2 تا پروسه با هم ارتباط برقرار میکنند؟؟ مثلا وقتی شما از کامپیوتر خود به یک وب سایت متصل میشوید، پروسه در حال اجرا درون کامپیوتر شما web browser و پروسه در حال اجرا در سرور مقصد، web server است. این دو پروسه از طریق یک تکنیک به نام Socket با یکدیگر ارتباط برقرار میکنند.

سوکت چیست؟

بنا بر تعریف، سوکت نقطه نهایی ارتباط بین ئو سیستم در یک شبکه است. یکم دقیق تر، سوکت به مجموع IP و Port درون یک سیستم گفته میشود. بنابراین در هر طرف ارتباط، یک سوکت وجود دارد که با سوکت دستگاه طرف مقابل ارتباط برقرار میکند.بطور کلی دو دسته ارتباط در بستر شبکه داریم:

1- ارتباط بر بستر مدل OSI

2- ارتباط بر بستر مدل TCP/IP

احتمالا میدونید که مدل OSI بیشتر جنبه آکادمیک و آموزشی دارد و فقط در کتاب های مرجع زیارتش میکنید و در عمل مدل TCP/IP زیرساخت ارتباطات شبکه ها است. سوکت را میتوان با بسیاری از زبان های برنامه نویسی تا اونجایی که من میدونم نوشت، مثل ++c و java و ... . اما در اینجا ما نوشتن یک سوکت خیلی ساده به زبان c را تمرین میکنیم.

پس اگر تا اینجا مطلب را دنبال کرده باشید میدانید که برای برقراری ارتباط، به دو طرف حداقل نیاز است که یکی سرویس دهنده ( سرور ) و یکی سرویس گیرنده ( کاربر ) باشد. یک فایل خالی جدید به نام server.c ایجاد کرده و کد های زیر را درون آن وارد کنید.

#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <time.h> 

int main(int argc, char *argv[])
{
	/*Variable*/
    int listenfd = 0, connfd = 0;
    struct sockaddr_in serv_addr; 

    char sendBuff[1025];
    time_t ticks; 

	/*Creat Socket*/
    listenfd = socket(AF_INET, SOCK_STREAM, 0);
    memset(&serv_addr, '0', sizeof(serv_addr));
    memset(sendBuff, '0', sizeof(sendBuff)); 

    serv_addr.sin_family = AF_INET;
    serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
    serv_addr.sin_port = htons(5000); 

	/*Call Bind*/
    bind(listenfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)); 

	/*Listen*/
    listen(listenfd, 10); 

	/*Accept*/
    while(1)
    {
        connfd = accept(listenfd, (struct sockaddr*)NULL, NULL); 

        ticks = time(NULL);
        snprintf(sendBuff, sizeof(sendBuff), "%.24s\r\n", ctime(&ticks));
        write(connfd, sendBuff, strlen(sendBuff)); 

        close(connfd);
        sleep(1);
     }
}

کد بالا چکار میکند؟

1- تابع socket درون kernel یک سوکت بدون نام درست کرده و یک عدد int به عنوان socket descriptor برمیگرداند. این تابع domainfamily را به عنوان آرگومان اول میپذیرد. چون از IPv4 استفاده میکنیم، به عنوان Internet Family برای IPv4 از کلمه کلیدی AF_INET استفاده میکنیم. در آرگومان دوم این تابع مشخص میکنیم که از لایه انتقال مدل TCPIP استفاده کن. برای این آرگومان مهم است که مقداری که باریش مشخص میکنیم، خاصیت acknowledgement داشته باشد مثل TCP. ( اگه چیزایی که میگم رو متوجه نمیشید برید مباحث +network رو یه نگاه بندازید. ) آرگومان سوم هم معمولا صفر است تا kernel از پروتکل پیش فرض ارتباطی شی گراء یعنی TCP استفاده کند.

2- تابع bind جزئیاتی که در ساختار serv-addr وجود دارد را به سوکتی که در مرحله قبل ایجاد شد الحاق میکند. جزئیاتی که الحاق میشود شامل family/domain ، و interface ای که باید از آن گوش کند ( listen ) و پروتی که سرور روی آن گوش میدهد و منتظر درخواست کاربر است.

3- در تابع listen آرگومان دوم که عدد 10 گرفته یعنی اینکه سرور حداکثر 10 تا connection از طرف سوکت کاربر قبول میکند.

4- پس از اینکه تابع listen با موفقیت ایجاد شد، سوکت بصورت عملیاتی شروع به گوش دادن میکند.

5- هنگامی که تابع accept فراخوانی میشود، سرور وارد فاز sleep میشود و منتظر میماند تا درخواستی از سمت کاربر فرستاده شود. وقتی که درخواست کاربر به سرور رسید، three way TCP handshake انجام میشود (به مباحث +network مراجعه کنید) و socket descriptor را به عنوان سوکت کاربر برمیگرداند.

6- تابع accept در یک حلقه بی نهایت قرار دارد، پس سرور همیشه آماده بکار است. برای اینکه سرور منابع سیستم را یکباره اشغال نکند یک تاخیر 1 ثانیه ای گذاشتیم.

7- هنگامی که یک درخواست از طرف کاربر رسید، در سرور زمان و تاریخ محاسبه شده و از طریق descriptor که توسط تابع accept برگردانده میشود، درون سوکت ارتباطی با کاربر نوشته میشود و کاربر آنرا دریافت میکند.

حال یک فایل خالی دیگر با اسم client.c ایجاد کرده و کد های زیر را درون آن وارد کنید.

#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <netdb.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <arpa/inet.h> 

int main(int argc, char *argv[])
{
    int sockfd = 0, n = 0;
    char recvBuff[1024];
    struct sockaddr_in serv_addr; 

    if(argc != 2)
    {
        printf("\n Usage: %s <ip of server> \n",argv[0]);
        return 1;
    } 

    memset(recvBuff, '0',sizeof(recvBuff));
    if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
    {
        printf("\n Error : Could not create socket \n");
        return 1;
    } 

    memset(&serv_addr, '0', sizeof(serv_addr)); 

    serv_addr.sin_family = AF_INET;
    serv_addr.sin_port = htons(5000); 

    if(inet_pton(AF_INET, argv[1], &serv_addr.sin_addr)<=0)
    {
        printf("\n inet_pton error occured\n");
        return 1;
    } 

    if( connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0)
    {
       printf("\n Error : Connect Failed \n");
       return 1;
    } 

    while ( (n = read(sockfd, recvBuff, sizeof(recvBuff)-1)) > 0)
    {
        recvBuff[n] = 0;
        if(fputs(recvBuff, stdout) == EOF)
        {
            printf("\n Error : Fputs error\n");
        }
    } 

    if(n < 0)
    {
        printf("\n Read error \n");
    } 

    return 0;
}

حالا این کد چه میکند ؟

1- اینجا هم یک سوکت با تابع socket ایجاد میشود.

2- اطلاعاتی نظیر IP و پورت سرور در یک struct توسط تابع connect صدا زده میشود که قصد دارد با سوکت ایجاد شده با سرور ارتباط برقرار کند.

3- دقت کنید که در اینجا کاربر را ملزم به استفاده از یک پورت خاص برای ایجاد سوکت نکردیم، بلکه انتخاب پورت را به kernel واگذار کردیم. در حالی که پورتی که سرور با آن کار میکند باید مشخص باشد که معولا در سناریو های واقعی شماره پورت های زیر 1024 است مثل پورت 80 برای ارتباطات HTTP.

4- هنگامی که سوکت ایجاد شد، سرور دیتایی (در اینجا date + time ) را برای کاربر، از طریق سوکت ارتباطی برقرار شده میفرستد و کاربر به راحتی آنرا میخواند.

برای اجرای برنامه 2 تا ترمینال باز کنید. در یکی server.c را کامپایل و اجرا کرده و در دیگری client.c را کامپایل و اجرا کنید. به ابنصورت که هر دو کد را با gcc کامپایل کنید. سپس در ترمینالی که کد سرور را کامپایل کردید دستور server. را زده، خواهید دید که ترمینال را اشغال میکند و دستور دیگری نمیتوانید وارد کنید. سپس در ترمینالی که کد کاربر را کامپایل کردید دستور client. را با آرگومان IP سرور وارد کنید.

در ترمینال سرور:

[root@CentOS6 c]# gcc -o server server.c
[root@CentOS6 c]# ./server

در ترمینال کاربر:

[root@CentOS6 c]# ./client 127.0.0.1
Sat Aug 13 19:37:52 2016
[root@CentOS6 c]# 

پایان قسمت بیست و ششم

نویسنده : سید محمد باقر موسوی

منبع : جزیره برنامه نویسی وب سایت توسینسو

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی است

آیا این مطلب برای شما مفید بود؟



سایر منابع و مطالب مرتبط با برنامه نویسی سوکت در c# [ برای قرار گرفتن در این لیست از صفحه تماس با ما اقدام کنید ]
programming.tosinso.com .
آموزش برنامه نویسی C قسمت 26 : Socket Programming - توسینسو

Aug 13, 2016 — سوکت را میتوان با بسیاری از زبان های برنامه نویسی تا اونجایی که من میدونم نوشت، مثل ++c و java و ... . اما در اینجا ما نوشتن یک سوکت خیلی ساده به ... ادامه...


faradars.org .
آموزش برنامه نویسی سوکت در سی شارپ (C#‎) | فرادرس

اندرویدپی اچ پی (PHP)پایتون (Python)جاوا (Java)برنامه‌نویسی Cوردپرسطراحی سایت با HTML و CSSمجموعه آموزش‌های متلب موارد بیشتر... هوش مصنوعی و یادگیری ... ادامه...


www.kianpub.com .
برنامه نویسی سوکت های TCP/IP در C - نشر دانشگاهی كيان

ﻧﺎم ﻛﺘﺎب. : ﺑﺮﻧﺎﻣﻪ. ﻧﻮﻳﺴﻲ ﺳﻮﻛﺖ. ﻫﺎي. TCP/IP. در. C. ﻧﺎﺷﺮ. : داﻧﺸﮕﺎﻫﻲ ﻛﻴﺎن. (. ﻛﻴﺎن راﻳﺎﻧﻪ ﺳﺒﺰ. ) ﻣﺆﻟﻔ. ﺎن. : ﻣﺎﻳﻜﻞ ﺟﻲ . داﻧﺎﻫﻮ. -. ﻛﻨﺚ ال . ﻛﺎﻟﻮرت . ﻣﺘﺮﺟﻢ. : ﻏﻼﻣﺮﺿﺎ ﺻﺎﺑﺮي ﺗﺒﺮﻳﺰي. ﭼﺎپ ا. ول. : 1391. ﺗﻴﺮاژ. ادامه...


git.ir .
برنامه نویسی سوکت (Socket Programming) - Git.ir

مجموعه آموزش های برنامه نویسی سوکت (Socket Programming) به صورت تصویری و رایگان - برنامه نویسی ... سوکت امکان ارتباط بین دو فرایند مختلف را در دستگاه های مشابه یا متفاوت فراهم می کند. ... udemy-tcpip-socket-programming-in-c-net-for- ... ادامه...


projectp30.ir .
آموزش برنامه نویسی سوکت (Socket Programming) با #C | انجام ...

خانه / آموزش ها / آموزش برنامه نویسی سوکت (Socket Programming) با #C. در این کتاب ابتدا به شرح مفاهیم پایه مدل مرجع OSI پرداخته میشود و سپس TCI /IP را بعنوان ... ادامه...


matlabsite.com .
آموزش برنامه نویسی سوکت در سی شارپ (#C) | مرجع متلب و هوش ...

Dec 16, 2015 — برنامه سازی شبکه، یکی از نیازهای مهندسان کامپیوتر می باشد. تمام برنامه هایی که در بستر شبکه می خواهند به صورت امن برنامه نویسی گردند باید با ... ادامه...


www.irstu.com .
برنامه نویسی سوکت در C و ++C - دانشجوی ایرانی

Dec 15, 2013 — اسلاید های Socket Programming in C++/C در دو بخش اتصال گرا و بدون اتصال به تشریح مباحث برنامه نویسی سوکت به زبان های سی و سی پلاس ... ادامه...


karbalad.rozblog.com .
کتاب اموزش برنامه نویسی شبکه در c++ و c ( سوکت پروگرامینگ ...

اموزش - برنامه نویسی - شبکه - در - c - c++ - سی - سی پلاس پلاس - کاربلد - هکر -پرهام - تروجان - دانلود - فیلم - موزیک - سریال - فیلم - کتاب - اهنگ - هک -نفوذ- سمینار ... ادامه...


www.7khatcode.com .
معرفی کتاب برنامه نویسی c و c++ برای تحت شبکه , سوکت ...

Oct 30, 2019 — دوستانی که اطلاع دارند ممنون میشم چند تا منبع برنامه نویسی c یا c++ برای تحت شبکه و سوکت ... برای پرل معرفی کنین منبع درست درمون پیدا ... ادامه...


p30eng.com .
کتاب آموزش برنامه نویسی شبکه با ++C | مهندسی کامپیوتر ...

Mar 9, 2016 — در این کتاب شما با مفاهیم برنامه نویسی سوکت در C++/C اشنا خواهید شد. سرفصل ها : مقدمه; Winsock چیست ؟ ساختمان ها (struct) و بررسی و حمل داده ها (Data ... ادامه...


parscoders.com .
برنامه گفتگوی برخط (چت) با استفاده از سوکت در زبان C یا ...

امکان استفاده از زبان جاوا یا پایتون نیز وجود دارد اما به دلیل تمرکز روی نحوه پیاده سازی همگامی فرایندها اصلا نباید در برنامه نویسی سوکت و برنامه نویسی سرویس ... ادامه...


www.codenevisan.com .
برنامه نویسی Server/Client اتصال گرا (TCP) با کمک سوکت در ...

برنامه نویسی Server/Client اتصال گرا (TCP) با کمک سوکت در سی شارپ ... سایت کدنویسان سعی می کند آموزش سی شارپ (C Sharp) را با استفاده از نمونه برنامه ها و ... ادامه...


acdev.ir .
برنامه نویسی شبکه با استفاده از سوکت ها - آکادمی برنامه ...

برای سادگی کار و همچنین ارائه دقیق ، کدهای که در آن ارائه می شود به زبان C هستند که در محیط سیستم عامل لینوکس و با مترجم gcc به زبان ماشین ترجمه شده اند. برنامه ... ادامه...


www.itport.ir .
آموزش برنامه نویسی سوکت در #C - آی تی پورت

Jun 7, 2014 — آموزش کامل توابع سوکت پروگرمینگ در سی شارپ، همراه با مثال. ادامه...


sokanacademy.com .
درخواست آموزش برنامه نویسی سوکت با زبان جاوا یا c++

Aug 2, 2016 — سلام. میخوام برنامه نویسی سوکت با زبان جاوا رو یاد بگیرم ولی یا واقعا مطالبش گیج کنندست یا کسی نبوده که به زبان ساده و کاربردی توضیح بده-. ادامه...


www.lib.ir .
برنامه نویسی سوکت های TCP/IP در C (داناهو مایکل ج) - کتابخانه ...

مشخصات کتاب برنامه نویسی سوکت های TCP/IP در C در کتابخانه کتابخانه مرکزی و مرکز اطلاع رسانی شهرداری اصفهان. ادامه...


www.slideshare.net .
Socket Programming in C++ - SlideShare

Jun 15, 2014 — Socket Programming in C++. 1. ‫سوکت‬ ‫نویسی‬ ‫برنامه‬ ‫نژاد‬ ‫یوسفی‬ ‫احمد‬ 1; 2. ‫ها‬ ‫سرفصل‬ •‫سوکت‬ ‫نویسی‬ ‫برنامه‬ ‫و‬ ‫سوکت‬ ‫معرفی‬ •‫ها‬ ... ادامه...


www.tahlildadeh.com .
کتاب آموزش Socket Programming به کمک C - تحلیل داده

Oct 19, 2015 — این کتاب آموزش c#شامل برنامه نویسی سوکت به دو روش سنکرون و آسنکرون است و به آموزش قطعه کدها و توضیح نحوه عملکرد هر قطعه کد میپردازد. ادامه...


www.sourcebaran.com .
دانلود کتاب آموزشی برنامه نویسی سوکت - سورس باران

ابر برچسب ها. Best sources c C Adobe CSS css3 PSD web Programming Source coding آموزش #c آموزش HTML آموزش php آموزش برنامه نویسی آموزش برنامه نویسی ... ادامه...


aghazeh.com .
دانلود کتاب برنامه نویسی شبکه در یونیکس در C++/C به زبان ...

برنامه نویسی سوکت ، ارتباط بین یک برنامه در کامپیوتر شما و سرور از طریق TCP است . سوکت نیز نقطه-پایان ارتباط شما و سرور است . یعنی شما به سوکت اطلاعات را ... ادامه...


yektabook.com .
برنامه نویسی سوکت های TCP/IP در C - یکتامهر|ارسال به تمام نقاط

برنامه نویسی سوکت های TCP/IP در C مترجم: غلامرضا صابری تبریزی انتشارات: کیان رایانه از بانک کتاب یکتابوک و ارسال کتاب به سراسر ایران. ادامه...


bashiry.persiangig.com .
Socket Programming.pdf

ﺑﮕﻮﻧــﻪ ای ﺑﺮﻧﺎﻣـﻪ C ﺣﺎل ﻓﺮض ﻣﯽﮐﻨﯿﻢ ﯾﮏ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺲ ﺑﺨﻮاﻫﺪ در ﯾﮏ ﻣﺤﯿﻂ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﻣﺜﻞ. ﻧﻮﯾﺴﯽ ﮐﻨﺪ ﮐﻪ ... ﺳﻮﮐﺖ ﯾﮏ ﻣﻔﻬﻮم اﻧﺘﺰاﻋﯽ از ﺗﻌﺮﯾــﻒ ارﺗﺒـﺎط در ﺳـﻄﺢ ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴـﯽ ﺧﻮاﻫـﺪ ﺑـﻮد و. ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺲ ﺑﺎ ﺗﻌﺮﯾﻒ ... ادامه...


www.adinehbook.com .
کتاب برنامه نویسی سوکت ها در شبکه های TCP/IP در C ~مایکل ...

برنامه نویسی سوکت ها در شبکه های TCP/IP در C ~مایکل جی. داناهو، کنث ال. کالورت، غلامرضا صابری تبریزی (مترجم) - نشر خدمات نشر کیان رایانه سبز - بزرگترین ... ادامه...



ارسال نظر

نام


ایمیل


نظر