Прерванная функция connect

Прерванная функция connect

Что происходит, если наш вызов функции connect на обычном блокируемом сокете прерывается, скажем, перехваченным сигналом, прежде чем завершится трехэтапное рукопожатие TCP? Если предположить, что функция connect не перезапускается автоматически, то она возвращает ошибку EINTR. Но мы не можем снова вызвать функцию connect, чтобы добиться завершения установления соединения. Это приведет к ошибке EADDRINUSE.

Все, что требуется сделать в этом сценарии, — вызвать функцию select, так, как мы делали в этом разделе для неблокируемой функции connect. Тогда функция select завершится, если соединение успешно устанавливается (делая сокет доступным для записи) или если попытка соединения неудачна (сокет становится доступен для чтения и для записи).

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Функция SUM

Из книги Обработка баз данных на Visual Basic®.NET автора Мак-Манус Джеффри П

Функция SUM Ваши возможности в подведении итогов не ограничены простым подсчетом записей. Используя функцию SUM, можно генерировать итоговые результаты для всех возвращаемых записей по любым числовым полям. Например, для создания запроса, который генерирует итоги по


Голубятня: Globusbook 950 Connect Сергей Голубицкий

Из книги Цифровой журнал «Компьютерра» № 67 [02.05.2011 — 08.05.2011] автора Журнал «Компьютерра»

Голубятня: Globusbook 950 Connect Сергей Голубицкий Опубликовано 05 мая 2011 года Сегодня у нас на видеопрезентации — очередная игрушка от милого моему сердцу «Глобуса»: электронная ибукса, укомплектованная 3G минирутером и USB-модемом от Мегафона — GLOBUSBOOK 950


Функция uni()

Из книги Fiction Book Designer Краткое руководство автора Автор неизвестен

Функция uni() Поиск/замена символа по его юникодному номеру также может быть сделана при помощи функции uni().Пример функции uni(): Boouni(107,32)Designer найдет слово Book


Функция uni()

Из книги Fiction Book Designer 3.2. Краткое руководство автора Izekbis

Функция uni() Поиск/замена символа по его юникодному номеру также может быть сделана при помощи функции uni().Пример функции uni(): Boouni(107,32)Designer найдет слово Book


Функция sum

Из книги Технология XSLT автора Валиков Алексей Николаевич


Функция contains

Из книги Как найти и скачать в Интернете любые файлы автора Райтман М. А.


Структура сети Direct Connect

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

Структура сети Direct Connect Как уже упоминалось ранее, сеть Direct Connect (Прямое соединение) — это децентрализованная сеть, состоящая из отдельных серверов-коммутаторов (хабов), к которым подключаются компьютеры пользователей для обмена файлами. Пользователи могут искать и


Оператор CONNECT

Из книги Создание игр для мобильных телефонов автора Моррисон Майкл


4.3. Функция connect

Из книги автора

4.3. Функция connect Функция connect используется клиентом TCP для установления соединения с сервером TCP.#include <sys/socket.h>int connect(int sockfd, const struct sockaddr *servaddr, socklen_t addrlen);Возвращает: 0 в случае успешного выполнения функции, -1 в случае ошибкиАргумент sockfd — это дескриптор сокета,


8.11. Функция connect для UDP

Из книги автора

8.11. Функция connect для UDP В конце разделе 8.9 мы упомянули, что асинхронные ошибки не возвращаются на сокете UDP, если сокет не был присоединен. На самом деле мы можем вызвать функцию connect для сокета UDP (см. раздел 4.3). Но это не приведет ни к чему похожему на соединение TCP: здесь не


Многократный вызов функции connect для сокета UDP

Из книги автора

Многократный вызов функции connect для сокета UDP Процесс с присоединенным сокетом UDP может снова вызвать функцию connect Для этого сокета, чтобы:? задать новый IP-адрес и порт;? отсоединить сокет.Первый случай, задание нового собеседника для присоединенного сокета UDP, отличается


Тайм-аут для функции connect (сигнал SIGALRM)

Из книги автора

Тайм-аут для функции connect (сигнал SIGALRM) В листинге 14.1[1] показана наша функция connect_timeo, вызывающая функцию connect с ограничением по времени, заданным вызывающим процессом. Первые три аргумента — это аргументы, которых требует функция connect, а четвертый — это длительность


16.3. Неблокируемая функция connect

Из книги автора

16.3. Неблокируемая функция connect Когда сокет TCP устанавливается как неблокируемый, а затем вызывается функция connect, она немедленно возвращает ошибку EINPROGRESS, однако трехэтапное рукопожатие TCP продолжается. Далее мы с помощью функции select проверяем, успешно или нет завершилось


16.4. Неблокируемая функция connect: клиент времени и даты

Из книги автора

16.4. Неблокируемая функция connect: клиент времени и даты В листинге 16.7 показана наша функция connect_nonb, вызывающая неблокируемую функцию connect. Мы заменяем вызов функции connect, имеющийся в листинге 1.1, следующим фрагментом кода:if (connect_nonb(sockfd, (SA*)&servaddr, sizeof(servaddr), 0) < 0)err_sys("connect