Bloklanmagan rozetkalar nima?
Bloklanmagan rozetkalar nima?

Video: Bloklanmagan rozetkalar nima?

Video: Bloklanmagan rozetkalar nima?
Video: POLSHA NOMER OLISH 2023 // BLOKLANMAGAN NOMER OLISH 2024, May
Anonim

yo'q - rozetkalarni blokirovka qilish . Ushbu muammoning echimi "deb ataladi. yo'q - rozetkalarni blokirovka qilish ". Odatiy bo'lib, TCP rozetkalar bor" blokirovka qilish " rejimi. Masalan, oqimdan o'qish uchun recv() ga qo'ng'iroq qilganingizda, masofaviy saytdan kamida bir bayt ma'lumot o'qilmaguncha boshqaruv dasturingizga qaytarilmaydi.

Shunga ko'ra, blokirovka qiluvchi va bloklanmaydigan 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.

Bundan tashqari, so'rash mumkin, rozetkalar sukut bo'yicha bloklanadimi? tomonidan standart , TCP rozetkalar a ga joylashtiriladi blokirovka qilish rejimi. Bu shuni anglatadiki, ba'zi bir operatsiya tugamaguncha boshqaruv sizning dasturingizga qaytarilmaydi.

Bunga kelsak, qanday qilib bloklanmagan rozetkani yasash mumkin?

Belgilash uchun a rozetka kabi yo'q - blokirovka qilish , biz fcntl tizim chaqiruvidan foydalanamiz. Mana bir misol: int flags = guard(fcntl(socket_fd, F_GETFL), "fayl bayroqlarini ololmadi"); guard(fcntl(socket_fd, F_SETFL, bayroqlar | O_NONBLOCK), "bo'lmadi o'rnatish fayl bayroqlari");

Soket blokirovkasi nima?

A rozetka bo'lishi mumkin" blokirovka rejimi " yoki "bloklanmaslik rejimi ." Funktsiyalari rozetkalar ichida blokirovka qilish (yoki sinxron) rejimi ular o'z harakatlarini yakunlamaguncha qaytmanglar. Bu deyiladi blokirovka qilish chunki rozetka Funktsiyasi chaqirilgan hech narsa qila olmaydi - bloklanadi - qo'ng'iroq qaytib kelguncha.

Tavsiya: