Aghaeifar
سه شنبه 22 اردیبهشت 1394, 13:02 عصر
سلام و وقت بخیر
برای یه ارتباط ساده UDP بین دو تا رایانه کمی سوکت پرورگرامینگ در سی ++ خوندم و یه برنامه ای رو در حال ویرایش هستم. چند سوال اساسی در ذهنم ایجاد شد که ممنون میشم راهنمایی کنید.
من توابع recvfrom یا recv در طرف کلاینتم برای دریافت داده استفاده می کنم. سرور داره پیوسته یه رشته ای۲۰ کارکتری رو ارسال می کنه.
سوال اولم اینه که اگر من recvfrom رو فراخوانی کنم ممکنه که یه دفعه از وسط رشته ی دریافتی شروع به خوندن کنه؟ یا همیشه درست می خونه خودش؟ یعنی مثلا سرور رشته "abcdefghijklmnopqrst" رو ارسال کنه اما زمان فرخوانی تابع recvfrom در برنامه همزمان شه با دریافت کارکتر g در کلاینت. لذا از اینجا به بعد رو می خونه؟ یا کلا این رشته رو بی خیال میشه و صبر می کنه یک رشته ۲۰ کارکتری جدید وارد بشه؟
سوال دومم این است که اگر recvfrom رو فراخوانی کردم و داده ای هنوز نیومده باشه چقدر صبر می کنه تا داده بیاد اگر نیومد خطا بر می گردونه؟ باید در همون لحظه ی فراخوانی تابع recvfrom داده ای از طریق پروتکل UDP وارد کلاینت بشه؟
سوال سومم اینه که اینجا آیا ما بافر داریم؟ یعنی اگر من مدتی چیزی در کلاینت نخونم و بعد تابع recvfrom رو صدا بزنم می ره اولین داده ای خوانده نشده که مدتی قبل اومده و در بافر ذخیره شده رو می خونه یا نه به روزترین داده ی ارسال شده از طرف سرور رو می خونه؟
خیلی ممنون میشم اگر بتونید راهنمایی فرمایید که این مسائل برام روشن بشه
برای یه ارتباط ساده UDP بین دو تا رایانه کمی سوکت پرورگرامینگ در سی ++ خوندم و یه برنامه ای رو در حال ویرایش هستم. چند سوال اساسی در ذهنم ایجاد شد که ممنون میشم راهنمایی کنید.
من توابع recvfrom یا recv در طرف کلاینتم برای دریافت داده استفاده می کنم. سرور داره پیوسته یه رشته ای۲۰ کارکتری رو ارسال می کنه.
سوال اولم اینه که اگر من recvfrom رو فراخوانی کنم ممکنه که یه دفعه از وسط رشته ی دریافتی شروع به خوندن کنه؟ یا همیشه درست می خونه خودش؟ یعنی مثلا سرور رشته "abcdefghijklmnopqrst" رو ارسال کنه اما زمان فرخوانی تابع recvfrom در برنامه همزمان شه با دریافت کارکتر g در کلاینت. لذا از اینجا به بعد رو می خونه؟ یا کلا این رشته رو بی خیال میشه و صبر می کنه یک رشته ۲۰ کارکتری جدید وارد بشه؟
سوال دومم این است که اگر recvfrom رو فراخوانی کردم و داده ای هنوز نیومده باشه چقدر صبر می کنه تا داده بیاد اگر نیومد خطا بر می گردونه؟ باید در همون لحظه ی فراخوانی تابع recvfrom داده ای از طریق پروتکل UDP وارد کلاینت بشه؟
سوال سومم اینه که اینجا آیا ما بافر داریم؟ یعنی اگر من مدتی چیزی در کلاینت نخونم و بعد تابع recvfrom رو صدا بزنم می ره اولین داده ای خوانده نشده که مدتی قبل اومده و در بافر ذخیره شده رو می خونه یا نه به روزترین داده ی ارسال شده از طرف سرور رو می خونه؟
خیلی ممنون میشم اگر بتونید راهنمایی فرمایید که این مسائل برام روشن بشه