Блокталмайтын розеткалар дегеніміз не?
Блокталмайтын розеткалар дегеніміз не?

Бейне: Блокталмайтын розеткалар дегеніміз не?

Бейне: Блокталмайтын розеткалар дегеніміз не?
Бейне: BALLER - ШАРАУТ (MV) 2024, Мамыр
Anonim

жоқ - розеткаларды блоктау . Бұл мәселенің шешімі «деп аталады. жоқ - розеткаларды блоктау ". Әдепкі бойынша, TCP розеткалар бар" блоктау " режимі. Мысалы, ағыннан оқу үшін recv() функциясын шақырғанда, қашықтағы сайттан кемінде бір байт деректер оқылмайынша, басқару бағдарламасына қайтарылмайды.

Тиісінше, бұғаттайтын және блоктамайтын розетка дегеніміз не?

жылы блоктау режимі, қабылдау, жіберу, қосу (тек TCP) және қабылдау (тек TCP) розетка API қоңыраулары болады блок сұралған әрекет орындалғанға дейін шексіз. жылы жоқ - блоктау режимінде бұл функциялар дереу қайтарылады. ерік таңдау блок дейін розетка дайын.

Сондай-ақ, розеткалар әдепкі бойынша бұғатталады ма? Авторы әдепкі , TCP розеткалар а-ға орналастырылады блоктау режимі. Бұл басқару элементі белгілі бір операция аяқталғанша бағдарламаңызға қайтарылмайды дегенді білдіреді.

Осыған байланысты блоктамайтын розетканы қалай жасауға болады?

Белгілеу үшін а розетка ретінде жоқ - блоктау , біз fcntl жүйелік шақыруын қолданамыз. Міне мысал: int flags = guard(fcntl(socket_fd, F_GETFL), "файл жалаушаларын алу мүмкін болмады"); қорғаушы(fcntl(socket_fd, F_SETFL, жалаулар | O_NONBLOCK), "мүмкін емес орнату файл жалаулары»);

Розеткаларды блоктау дегеніміз не?

А розетка болуы мүмкін» блоктау режимі "немесе "блоктаусыз режимі ." функциялары розеткалар ішінде блоктау (немесе синхронды) режимі олар өз әрекеттерін аяқтамайынша оралмаңыз. Бұл деп аталады блоктау өйткені розетка шақырылған функциясы ештеңе істей алмайды - блокталады - қоңырау қайтарылғанша.

Ұсынылған: