Kaj so neblokirne vtičnice?
Kaj so neblokirne vtičnice?

Video: Kaj so neblokirne vtičnice?

Video: Kaj so neblokirne vtičnice?
Video: Zariadenie na ŠETRENIE ELEKTRINY | Ako ušetriť elektrinu doma? Úspora elektrickej energie 2024, Maj
Anonim

ne - blokirne vtičnice . Rešitev tega problema se imenuje " ne - blokirne vtičnice ". Privzeto TCP vtičnice so v " blokiranje " način. Na primer, ko pokličete recv() za branje iz toka, se nadzor ne vrne vašemu programu, dokler se z oddaljenega mesta ne prebere vsaj en bajt podatkov.

V skladu s tem, kaj je blokirna in neblokirna vtičnica?

V blokiranje način, recv, send, connect (samo TCP) in accept (samo TCP) vtičnico Klici API bodo blok za nedoločen čas, dokler se zahtevano dejanje ne izvede. V ne - blokiranje načinu, se te funkcije takoj vrnejo. izberite bo blok do vtičnico je pripravljen.

Lahko se tudi vprašate, ali so vtičnice privzeto blokirane? Avtor privzeto , TCP vtičnice so postavljeni v a blokiranje način. To pomeni, da se nadzor ne vrne v vaš program, dokler ni končana določena operacija.

V zvezi s tem, kako narediti vtičnico, ki ne blokira?

Za označitev a vtičnico kot ne - blokiranje , uporabljamo sistemski klic fcntl. Tukaj je primer: int flags = guard(fcntl(socket_fd, F_GETFL), "ni mogoče dobiti zastavic datoteke"); guard(fcntl(socket_fd, F_SETFL, zastavice | O_NONBLOCK), "ni bilo mogoče set zastavice datotek");

Kaj je blokiranje vtičnice?

A vtičnico lahko v " način blokiranja " ali "neblokiranje način ." Funkcije vtičnice v blokiranje (ali sinhrono) način ne vrnejo, dokler ne dokončajo svoje akcije. To se imenuje blokiranje zaradi vtičnico katerega funkcija je bila poklicana, ne more storiti ničesar - je blokirana - dokler se klic ne vrne.

Priporočena: