Ulanish bloklanmoqdami?
Ulanish bloklanmoqdami?

Video: Ulanish bloklanmoqdami?

Video: Ulanish bloklanmoqdami?
Video: Boshqa telefon kamerasiga ulanish #jalolmurad 2024, Aprel
Anonim

ulanmoq a blokirovka qilish sukut bo'yicha qo'ng'iroq qiling, lekin siz uni qo'ng'iroq qilishingiz mumkin blokirovka qilish SOCK_NONBLOCK bayrog'ini rozetkaga o'tkazish orqali. ulanmoq () TCP 3 tomonlama qoʻl siqish tugaguniga qadar bloklaydi. Tinglash tomonidagi qoʻl siqish yadrodagi TCP/IP stek orqali amalga oshiriladi va foydalanuvchi jarayonini xabardor qilmasdan yakunlanadi.

Xuddi shunday, so'raladi: blokirovka qiluvchi va bloklanmagan rozetka nima?

In blokirovka qilish rejimi, qabul qilish, yuborish, ulanish (faqat TCP) va qabul qilish (faqat TCP) rozetka API qo'ng'iroqlari amalga oshiriladi blok so'ralgan harakat bajarilgunga qadar muddatsiz. In yo'q - blokirovka qilish rejimida, bu funksiyalar darhol qaytadi. irodani tanlang blok gacha rozetka tayyor.

blokirovka funktsiyasi nima? A blokirovkalash funktsiyasi asosan abadiy hisoblaydi. Bu shuni anglatadiki blokirovka qilish . Boshqa blokirovkalash funktsiyalari IO paydo bo'lishini kutadi. bo'lmagan blokirovka qilish IO tizimi a degan ma'noni anglatadi funktsiyasi IO harakatini boshlaydi, so'ngra ishlamay qoladi va u sodir bo'lganda IO harakati natijasini boshqaradi.

Keyinchalik, savol tug'iladi: rozetka bloklanishini qabul qiladimi?

qabul qilish () ulanish mavjud bo'lmaguncha qo'ng'iroq qiluvchini bloklaydi. Agar xabarlar uchun joy bo'lmasa rozetka uzatiladigan xabarni ushlab turish uchun send() odatda bloklaydi. Agar manzilda xabarlar mavjud bo'lmasa rozetka , recv qo'ng'irog'i xabar kelishini kutadi.

Blokni tanlangmi?

Vaqt tugashi argumenti a'zolari 0 bo'lgan struct timeval tipidagi ob'ektga ishora qilsa, tanlang () emas blok . Vaqt tugashi argumenti NULL bo'lsa, tanlang () hodisa niqoblardan biri haqiqiy (noldan farqli) qiymat bilan qaytarilmaguncha bloklaydi.

Tavsiya: