Что такое неблокирующие сокеты?
Что такое неблокирующие сокеты?

Видео: Что такое неблокирующие сокеты?

Видео: Что такое неблокирующие сокеты?
Видео: Урок 6 - Модуль socket - non-blocking socket. Неблокирующий сокет 2024, Май
Anonim

не - блокировка розеток . Решение этой проблемы называется " не - блокировка розеток ". По умолчанию TCP Розетки находятся в " блокировка "режим. Например, когда вы вызываете recv () для чтения из потока, управление не возвращается вашей программе до тех пор, пока с удаленного сайта не будет прочитан хотя бы один байт данных.

Соответственно, что такое блокирующий и неблокирующий сокет?

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

Также можно спросить, а блокируются ли розетки по умолчанию? К дефолт , TCP Розетки помещаются в блокировка режим. Это означает, что управление не возвращается вашей программе, пока не будет завершена какая-то конкретная операция.

В связи с этим, как сделать неблокирующий сокет?

Отметить разъем в качестве не - блокировка , мы используем системный вызов fcntl. Вот пример: int flags = guard (fcntl (socket_fd, F_GETFL), «не удалось получить флаги файла»); guard (fcntl (socket_fd, F_SETFL, flags | O_NONBLOCK), "не удалось установленный флаги файлов ");

Что такое блокировка сокетов?

А разъем может быть в " режим блокировки "или" неблокирующий Режим . "Функции Розетки в блокировка (или синхронно) Режим не возвращайтесь, пока они не завершат свое действие. Это называется блокировка поскольку разъем функция которого была вызвана, не может ничего сделать - заблокирована - до тех пор, пока вызов не вернется.

Рекомендуемые: