Системные вызовы и библиотечные процедуры, применяемые с сокетами

В системе Linux взаимодействие по сети основано на понятии сокета. В приложениях для взаимодействия с программным обеспечением TCP/IP, входящим в состав операционной системы, используется ряд системных вызовов сокетов. В клиентском приложении создается сокет, который подключается к серверу на удаленном компьютере, а затем применяется для обмена данными с удаленным компьютером. И наконец, по завершении использования сокета клиентское приложение его закрывает. Сервер создает сокет, привязывает его к общепринятому порту протокола на локальном компьютере, а затем использует этот сокет для приема запроса на установление соединения от клиента. израильская бижутерия

На каждой странице данного приложения описан один из системных вызовов или одна из библиотечных функций, которые применяются при разработке клиентских или серверных приложений. Функции представлены в алфавитном порядке, и каждая страница посвящена отдельной функции. К числу таких функций относятся следующие: accept, bind, close, connect, fork, gethostbyaddr, gethostbyname, gethostid, gethostname, getpeername, getprotobyname, getservbyname, getsockname, getsockopt, gettimeofday, listen, read, recv, recvfrom, recvmsg, select, send, sendmsg, sendto, sethostid, setsockopt, shutdown, socket и write.

Многие из функций, описанных в настоящем приложении, предусмотрены и в других версиях UNIX. Однако в этих версиях они могут немного отличаться. Например, в первых версиях UNIX для обозначения ошибки, которая возникает, если сокет отмечен как неблокирующий, а вызов должен заблокироваться, использовалась символическая константа EW0ULDBL0CK. В системе Linux для обозначения той же ошибки применяется символическое имя EAGAIN (так как это позволяет подчеркнуть, что тот же вызов, выполненный позднее, может завершиться успешно). Для обеспечения обратной совместимости в системе Linux определена константа EWOULDBLOCK со значением, совпадающим с EAGAIN.

Описание

Функция accept используется в серверах для приема очередного входящего запроса на установление соединения через пассивный сокет. В сервере вначале вызывается функция socket для создания сокета, функция bind для его привязки к локальному IP-адресу и номеру порта протокола, функция listen для перевода сокета в пассивный режим и установки длины очереди запросов на установление соединения, и только после этого вызывается функция accept. Функция accept извлекает из очереди следующий запрос на установление соединения (или переходит в состояние ожидания до тех пор, пока не поступит запрос на соединение), создает для выполнения запроса новый сокет и возвращает дескриптор нового сокета. Функция accept может применяться только к потоковым сокетам (например, таким, которые предназначены для передачи данных по протоколу TCP).

Код возврата

Функция accept в случае успешного выполнения возвращает неотрицательный дескриптор сокета, а если возникла ошибка, возвращает -1. При возникновении ошибки глобальная переменная errno содержит одно из следующих значений.

Похожие статьи Меню Опрос Фото Популярное