Wat zijn niet-blokkerende stopcontacten?
Wat zijn niet-blokkerende stopcontacten?

Video: Wat zijn niet-blokkerende stopcontacten?

Video: Wat zijn niet-blokkerende stopcontacten?
Video: Is het wel slim om zomaar cookies te accepteren? #privacy 2024, Mei
Anonim

niet - stopcontacten blokkeren . De oplossing voor dit probleem heet " niet - stopcontacten blokkeren ". Standaard is TCP stopcontacten zijn in " blokkeren "-modus. Als u bijvoorbeeld recv() aanroept om uit een stream te lezen, wordt de besturing pas teruggegeven aan uw programma als ten minste één byte aan gegevens is gelezen van de externe site.

Dienovereenkomstig, wat is een blokkerende en niet-blokkerende socket?

In blokkeren modus, de recv, verzenden, verbinden (alleen TCP) en accepteren (alleen TCP) stopcontact API-aanroepen zullen blok voor onbepaalde tijd totdat de gevraagde actie is uitgevoerd. In niet - blokkeren modus, keren deze functies onmiddellijk terug. selecteer wil blok tot de stopcontact is klaar.

Men kan zich ook afvragen, blokkeren sockets standaard? Door standaard , TCP stopcontacten zijn geplaatst in een blokkeren modus. Dit betekent dat de besturing niet wordt teruggestuurd naar uw programma totdat een specifieke bewerking is voltooid.

Wat dit betreft, hoe maak je een niet-blokkerende socket?

om een te markeren stopcontact als niet - blokkeren , gebruiken we de fcntl-systeemaanroep. Hier is een voorbeeld: int flags = guard(fcntl(socket_fd, F_GETFL), "kon geen bestandsvlaggen ophalen"); guard(fcntl(socket_fd, F_SETFL, vlaggen | O_NONBLOCK), "kon niet set bestandsvlaggen");

Wat is socketblokkering?

EEN stopcontact kan binnen zijn" blokkeermodus " of "niet-blokkerend modus ." De functies van stopcontacten in blokkeren (of synchroon) modus keer niet terug voordat ze hun actie kunnen voltooien. Dit heet blokkeren omdat de stopcontact wiens functie werd aangeroepen kan niets doen - is geblokkeerd - totdat de aanroep terugkeert.

Aanbevolen: