Блокира ли се връзката?
Блокира ли се връзката?

Видео: Блокира ли се връзката?

Видео: Блокира ли се връзката?
Видео: 🔮КАКВО ГО БЛОКИРА⚔️ВАШИЯТ ЧОВЕК И ОТНОШЕНИЯТА ВИ🔮 2024, Април
Anonim

свържете се е блокиране по подразбиране, но можете да го направите не блокиране чрез преминаване към сокет на флага SOCK_NONBLOCK. свържете се () блокира до завършване на TCP 3-посочното ръкостискане. Ръкостискането от страната на слушане се обработва от TCP/IP стека в ядрото и завършва без уведомяване на потребителския процес.

По същия начин се пита какво е блокиращ и неблокиращ сокет?

В блокиране режим, recv, изпращане, свързване (само TCP) и приемане (само TCP) гнездо API повикванията ще блок за неопределено време до извършване на исканото действие. В не - блокиране режим, тези функции се връщат незабавно. изберете ще блок докато гнездо готово е.

какво е блокираща функция? А блокираща функция по принцип изчислява завинаги. Това означава с блокиране . Друго блокиращи функции ще изчака да се случи IO. не- блокиране IO система означава a функция стартира IO действие, след което остава в неактивен режим, след което обработва резултата от IO действието, когато се случи.

Впоследствие въпросът е дали сокетът приема блокиране?

приемам () блокира обаждащия се, докато има връзка. Ако няма свободно място за съобщения на гнездо за да задържи съобщението за предаване, след което send() обикновено блокира. Ако няма налични съобщения в гнездо , recv повикването чака да пристигне съобщение.

Избор на блок ли е?

Ако аргументът за изчакване сочи към обект от тип struct timeval, чиито членове са 0, изберете () не блок . Ако аргументът за изчакване е NULL, изберете () блокира, докато събитие не доведе до връщане на една от маските с валидна (не-нула) стойност.

Препоръчано: