Šta su neblokirajuće utičnice?
Šta su neblokirajuće utičnice?

Video: Šta su neblokirajuće utičnice?

Video: Šta su neblokirajuće utičnice?
Video: Socket Programming Part - 4 (Blocking vs non blocking sockets) in C/C++ 2024, Maj
Anonim

non - blokiranje utičnica . Rješenje ovog problema se zove " non - blokiranje utičnica ". Podrazumevano, TCP utičnice su u " blokiranje " režim. Na primjer, kada pozovete recv() za čitanje iz toka, kontrola se ne vraća vašem programu sve dok se barem jedan bajt podataka ne pročita sa udaljenog mjesta.

Prema tome, šta je blokirajuća i neblokirajuća utičnica?

U blokiranje način, recv, send, connect (samo TCP) i accept (samo TCP) socket API pozivi će blok na neodređeno vrijeme dok se tražena radnja ne izvrši. U non - blokiranje modu, ove funkcije se odmah vraćaju. izaberite će blok do socket je spreman.

Neko se takođe može zapitati, da li se utičnice blokiraju podrazumevano? By default , TCP utičnice nalaze se u a blokiranje način rada. To znači da se kontrola ne vraća vašem programu dok se neka specifična operacija ne završi.

Što se toga tiče, kako napraviti utičnicu koja ne blokira?

Za označavanje a socket as non - blokiranje , koristimo sistemski poziv fcntl. Evo primjera: int flags = guard(fcntl(socket_fd, F_GETFL), "ne mogu dobiti zastavice datoteke"); guard(fcntl(socket_fd, F_SETFL, zastavice | O_NONBLOCK), "ne može set zastavice datoteka");

Šta je blokiranje utičnice?

A socket može biti u " način blokiranja " ili "neblokirajući način rada ." Funkcije utičnice in blokiranje (ili sinhroni) način rada ne vraćaju se dok ne završe svoju akciju. Ovo se zove blokiranje zbog socket čija je funkcija pozvana ne može ništa učiniti - blokira se - dok se poziv ne vrati.

Preporučuje se: