سوکت های غیر مسدود چیست؟
سوکت های غیر مسدود چیست؟

تصویری: سوکت های غیر مسدود چیست؟

تصویری: سوکت های غیر مسدود چیست؟
تصویری: بدون پاک شدن اطلاعاتت قفل گوشی سامسونگت رو‌ باز کن😱 2024, نوامبر
Anonim

غیر - مسدود کردن سوکت ها . راه حل این مشکل " غیر - مسدود کردن سوکت ها به طور پیش فرض، TCP پریز برق هستند در " مسدود کردن حالت ". به عنوان مثال، وقتی recv() را برای خواندن از یک جریان فراخوانی می کنید، کنترل به برنامه شما باز نمی گردد تا زمانی که حداقل یک بایت داده از سایت راه دور خوانده شود.

بر این اساس، سوکت مسدود کننده و غیر مسدود کننده چیست؟

که در مسدود کردن حالت، recv، ارسال، اتصال (فقط TCP) و پذیرش (فقط TCP) سوکت تماس های API انجام خواهد شد مسدود کردن به طور نامحدود تا زمانی که عمل درخواستی انجام شود. که در غیر - مسدود کردن حالت، این توابع بلافاصله برمی گردند. اراده را انتخاب کنید مسدود کردن تا سوکت آماده است.

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

با توجه به این موضوع، چگونه یک سوکت غیر مسدود کننده درست می کنید؟

برای علامت گذاری a سوکت مانند غیر - مسدود کردن ، از فراخوانی سیستم fcntl استفاده می کنیم. در اینجا یک مثال آورده شده است: int flags = guard(fcntl(socket_fd, F_GETFL), "could get flags file"); guard(fcntl(socket_fd، F_SETFL، پرچم‌ها | O_NONBLOCK)، "نمی‌توانست تنظیم پرچم فایل")

مسدود کردن سوکت چیست؟

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

توصیه شده: