Тоскоолбогон розеткалар деген эмне?
Тоскоолбогон розеткалар деген эмне?

Video: Тоскоолбогон розеткалар деген эмне?

Video: Тоскоолбогон розеткалар деген эмне?
Video: Бактылуулукка тоскоол болгон 10 себеп🫢 2024, Май
Anonim

жок - розеткаларды бөгөттөө . Бул маселени чечүү "деп аталат. жок - розеткаларды бөгөттөө ". Демейки боюнча, TCP розеткалар бар " бөгөт коюу " режими. Мисалы, сиз агымдан окуу үчүн recv() чакырганда, алыскы сайттан жок дегенде бир байт маалымат окулмайынча башкаруу программаңызга кайтарылбайт.

Демек, бөгөттөөчү жана бөгөттөгөн розетка деген эмне?

In бөгөт коюу режими, кабыл алуу, жөнөтүү, туташуу (TCP гана) жана кабыл алуу (TCP гана) розетка API чалуулары болот блок суралган иш-аракет аткарылганга чейин чексиз. In жок - бөгөт коюу режиминде, бул функциялар дароо кайтып келет. эрк тандоо блок чейин розетка даяр.

Ошондой эле сурашы мүмкүн, розеткалар демейки боюнча бөгөттөлөбү? By демейки , TCP розеткалар а жайгаштырылат бөгөт коюу режими. Бул кандайдыр бир конкреттүү операция аяктаганга чейин башкаруу сиздин программаңызга кайтарылбайт дегенди билдирет.

Буга байланыштуу, бөгөттөлбөгөн розетка кантип жасалат?

белгилөө үчүн а розетка катары жок - бөгөт коюу , биз fcntl тутумунун чакырыгын колдонобуз. Бул жерде мисал: int flags = guard(fcntl(socket_fd, F_GETFL), "файл желектерин ала алган жок"); guard(fcntl(socket_fd, F_SETFL, желектер | O_NONBLOCK), "албай койду коюу файл желектери");

Розетка бөгөттөө деген эмне?

А розетка болушу мүмкүн" бөгөттөө режими " же "бөгөтсүз режими ." функциялары розеткалар ичинде бөгөт коюу (же синхрондуу) режими алар иш-аракетин бүтүрмөйүнчө кайтпагыла. Бул деп аталат бөгөт коюу Себеби розетка анын функциясы чакырылган эч нерсе кыла албайт - бөгөттөлгөн - чалуу кайтып келгенге чейин.

Сунушталууда: