Soketi zisizo za kuzuia ni nini?
Soketi zisizo za kuzuia ni nini?

Video: Soketi zisizo za kuzuia ni nini?

Video: Soketi zisizo za kuzuia ni nini?
Video: NI KWANINI, AMBASSADORS OF CHRIST CHOIR, COPYRIGHT RESERVED 2012 2024, Novemba
Anonim

yasiyo - soketi za kuzuia . Suluhisho la tatizo hili linaitwa " yasiyo - soketi za kuzuia ". Kwa chaguo-msingi, TCP soketi wako ndani" kuzuia " modi. Kwa mfano, unapopiga simu recv() kusoma kutoka kwa mtiririko, udhibiti haurudishwi kwenye programu yako hadi angalau baiti moja ya data isomwe kutoka kwa tovuti ya mbali.

Ipasavyo, ni nini tundu la kuzuia na lisilozuia?

Katika kuzuia hali, recv, tuma, unganisha (TCP pekee) na ukubali (TCP pekee) tundu Simu za API zitafanya kuzuia kwa muda usiojulikana hadi hatua iliyoombwa imefanywa. Katika yasiyo - kuzuia mode, kazi hizi hurudi mara moja. chagua mapenzi kuzuia mpaka tundu iko tayari.

Mtu anaweza pia kuuliza, soketi zinazuia kwa chaguo-msingi? Na chaguo-msingi , TCP soketi zimewekwa kwenye a kuzuia hali. Hii inamaanisha kuwa udhibiti haurudishwi kwenye programu yako hadi utendakazi fulani mahususi ukamilike.

Kuhusiana na hili, unatengenezaje tundu lisilozuia?

Kuashiria a tundu kama yasiyo - kuzuia , tunatumia simu ya mfumo wa fcntl. Hapa kuna mfano: bendera za int = guard(fcntl(socket_fd, F_GETFL), "haikuweza kupata bendera za faili"); guard(fcntl(socket_fd, F_SETFL, bendera | O_NONBLOCK), "haikuweza kuweka bendera za faili");

Kuzuia soketi ni nini?

A tundu inaweza kuwa ndani" hali ya kuzuia " au "kutozuia hali ." Kazi za soketi katika kuzuia (au inasawazisha) hali wasirudi mpaka wamalize kitendo chao. Hii inaitwa kuzuia Kwa sababu ya tundu ambaye kazi yake iliitwa haiwezi kufanya chochote - imezuiwa - hadi simu irudi.

Ilipendekeza: