Ano ang mga nonblocking socket?
Ano ang mga nonblocking socket?

Video: Ano ang mga nonblocking socket?

Video: Ano ang mga nonblocking socket?
Video: FAST '15 - Non-blocking Writes to Files 2024, Mayo
Anonim

hindi - pagharang ng mga socket . Ang solusyon sa problemang ito ay tinatawag na " hindi - pagharang ng mga socket ". Bilang default, TCP mga saksakan ay nasa " pagharang " mode. Halimbawa, kapag tinawagan mo ang recv() upang magbasa mula sa isang stream, hindi ibabalik ang kontrol sa iyong program hanggang sa kahit isang byte ng data ay mabasa mula sa malayong site.

Alinsunod dito, ano ang blocking at non blocking socket?

Sa pagharang mode, ang recv, ipadala, kumonekta (TCP lamang) at tanggapin (TCP lamang) saksakan Ang mga tawag sa API ay harangan walang katiyakan hanggang sa maisagawa ang hiniling na aksyon. Sa hindi - pagharang mode, bumalik kaagad ang mga function na ito. piliin ang kalooban harangan hanggang sa saksakan handa na.

Maaari ding magtanong, ang mga socket ba ay humaharang bilang default? Sa pamamagitan ng default , TCP mga saksakan ay inilalagay sa a pagharang mode. Nangangahulugan ito na ang kontrol ay hindi ibabalik sa iyong programa hanggang sa makumpleto ang ilang partikular na operasyon.

Tungkol dito, paano ka gumawa ng non blocking socket?

Upang markahan ang a saksakan bilang hindi - pagharang , ginagamit namin ang fcntl system call. Narito ang isang halimbawa: int flags = guard(fcntl(socket_fd, F_GETFL), "hindi makakuha ng mga flag ng file"); guard(fcntl(socket_fd, F_SETFL, mga flag | O_NONBLOCK), "hindi itakda mga flag ng file");

Ano ang socket blocking?

A saksakan pwede sa" blocking mode " o "hindi pagharang mode ." Ang mga tungkulin ng mga saksakan sa pagharang (o kasabay) mode huwag bumalik hangga't hindi nila nakumpleto ang kanilang aksyon. Ito ay tinatawag na pagharang dahil ang saksakan na ang function ay tinawag ay walang magagawa - ay naharang - hanggang sa bumalik ang tawag.

Inirerekumendang: