اطلاعیه

Collapse
No announcement yet.

ارسال و دریافت از طریق پورت شبکه در زبان ++C

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    ارسال و دریافت از طریق پورت شبکه در زبان ++C

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

    #2
    پاسخ : ارسال و دریافت از طریق پورت شبکه در زبان ++C

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

    دیدگاه


      #3
      پاسخ : ارسال و دریافت از طریق پورت شبکه در زبان ++C

      [quote author=reza_agha link=topic=46299.msg236724#msg236724 date=1291634682]
      محیطی که روی اون کار میکنین چیه؟ میکرو کنترلر؟ پی سی؟ ویندوز ؟ لینوکس؟ این کاری که شما میخوایین انجامش بدین ربطی به C یا غیرهم نداره. اینا فقط ابزارشه.
      [/quoteمن می خوام در محیط پی سی اینکارو انجام بدم خیلی ممنون

      دیدگاه


        #4
        پاسخ : ارسال و دریافت از طریق پورت شبکه در زبان ++C

        راحتترین کار استفاده از socket programming هست. البته با ++C یه کمی کار دردسر داره. اگه با #C کار کنین 10 خط بیشتر نمیشه. خیلی هم راحتتره. اگه دوست داشتین باید یک تئوری کوچیک براتون توضیح بدم بعدش راحت میتونین شروع کنین.

        دیدگاه


          #5
          پاسخ : ارسال و دریافت از طریق پورت شبکه در زبان ++C

          خیلی ممنون بی زحمت اون تئوری را توضیح بدهید

          دیدگاه


            #6
            پاسخ : ارسال و دریافت از طریق پورت شبکه در زبان ++C

            ببینین. معمولا با دو تا تیپ ارتباط سر و کار داریم. یکی UDP که اصطلاحا بهش connectionless یا بدون ارتباط میگن و این به این معنی هست که مثل نامه شما پیغام رو میفرستی ولی معلوم نیست که دست طرف مقابلت میرسه یا نه. و یکی هم connection-based که پروتکل TCP از این نوع هست مثل استفاده از تلفن که تا طرف مقابل گوشی رو برنداره شما اقدام به صحبت یا همون ارسال و دریافت اطلاعات نمیکنی.

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

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

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

            سرویس TCP:
            آماده شدن برای سرویس دهی (نسبتا تئوری یا اسلوب کار):

            1- اخذ یک سوکت از سیستم.
            2- اتصال این سوکت در سیستم جاری به یک آی پی و شماره پورت مشخص. توضیح اینکه بعضی سیستم ها ممکنه دارای چند کارت شبکه و نتیجتا چند آدرس آی پی باشن. مسلما اینکه بگین شما رو توی کدوم پارتمان میشه پیداتون کرد هم با مشخص کردن پلاکتون یعنی پورتتون به بقیه اطلاع میدین. حالا اگه این پورت اشغال باشه این عمل رو نمیشه انجام داد.
            3- باید به بقیه اطلاع بدین کافه تعطیل نیست و سرویس میدیم. اصطلاحا میگیم سوکت رو در حالت listen قرار میدیم.

            از اونجایی که ممکنه در عین حال بیش از یک نفر برای سرویس گیری به این پارتمان مراجعه کنن باید ترتیبی داد که این پارتمان فقط یک دفتر هماهنگی باشه که مشتری ها رو به یک سری پارتمانهای دیگه ارجاع میده (که اصلا پلاکشون مهم نیست) بنا براین شما در حالتی آماده باش قرار میگیرین که به محض اینکه کسی برای سرویس گیری در زد بفرستینش سر وقت یک پارتمان ثانوی (این منطق من نیست ها! منطق دانشگاه برکلی برای socket programming هست). بنا براین شما یک سوکت رو accept میکنین و تا انتهای کارتون با اون سوکت کار میکنین. و دوباره وای می ایستین برای نفر بعدی.

            یک کد مجازی:



            Socket server;
            Socket client;

            server = new Socket(.....);

            server.Bind(IPAddress.Parse("192.168.1.100&qu ot,1000);
            server.Listen(10);
            for( ; ; )
            {
            client = server.accept();

            // work with client computer connected to <client> socket
            // in this thread or another one

            client.close();
            }




            .... بقیه اش فعلا طلبتون!



            دیدگاه

            لطفا صبر کنید...
            X