ВУЗ:
Составители:
53
Создание соединения
При создании канала передачи данных клиент создает соединения, а сервер
ожидает создания гнезда на стороне клиента. Для создания соединения используется
следующая функция:
int connect (int SOCKET, struct sockaddr *ADDR,
socklen_t LENGTH)
Функция инициирует соединение гнезда с дескриптором файла SOCKET с
гнездом, задаваемым аргументами ADDR и LENGTH. Обычно функция ожидает до тех
пор, пока не будет получен ответ от сервера. Можно задать неблокируемый режим для
гнезда SOCKET. В этом случае функция возвращает управление не ожидая ответа.
Если функция выполнилась успешно, она возвращает значение 0, в противном
случае возвращается -1. Переменная errno может принимать следующие значения:
EBADF SOCKET не является дескриптором файла;
ENOTSOCK SOCKET не является гнездом;
EADDRNOTAVAIL заданный адрес не доступен на удаленной машине;
EAFNOSUPPORT пространство имен, заданное в ADDR не поддерживается
гнездом;
EISCONN соединение для SOCKET уже установлено;
ETIMEDOUT таймаут установки соединения;
ECONNREFUSED сервер отказал в установлении соединения;
ENETUNREACH сеть, заданная адресом ADDR недоступна с заданной
машины;
EADDRINUSE адрес гнезда, задаваемый ADDR уже используется;
EINPROGRESS гнездо SOCKET находится в неблокируемом режиме и
соединение не может быть установлено немедленно.
EALREADY гнездо SOCKET не находится в неблокируемом режиме и
находится в ожидании соединения.
Прослушивание соединений
В пространстве имен Интернет отсутствует механизм защиты,
контролирующего доступ к порту; любой процесс на любой машине может
подключиться к серверу. Для того, чтобы ограничить доступ к серверу, необходимо
проверять адрес, с которого происходит попытка соединения или реализовать
собственный протокол идентификации клиента.
int listen (int SOCKET, unsigned int N)
Функция listen разрешает гнезду SOCKET принимать соединения, делая его
гнездом сервера. Использование функции недопустимо для способов взаимодействия,
не требующих установления соединений.
Аргумент N устанавливает размер очереди ожидающих соединений. Когда
очередь заполнена, попытки новых клиентов соединиться завершаются с кодом ошибки
ECONNREFUSED до тех пор, пока сервер не вызовет функцию accept, принимающую
соединение из очереди.
Функция возвращает 0 в случае успешного выполнения и -1 в случае ошибки.
При ошибке переменная errno может принимать следующие значения:
EBADF SOCKET не является правильным значением дескриптора файла;
ENOTSOCK SOCKET не является гнездом;
EOPNOTSUPP гнездо SOCKET не поддерживает эту операцию.
Создание соединения При создании канала передачи данных клиент создает соединения, а сервер ожидает создания гнезда на стороне клиента. Для создания соединения используется следующая функция: int connect (int SOCKET, struct sockaddr *ADDR, socklen_t LENGTH) Функция инициирует соединение гнезда с дескриптором файла SOCKET с гнездом, задаваемым аргументами ADDR и LENGTH. Обычно функция ожидает до тех пор, пока не будет получен ответ от сервера. Можно задать неблокируемый режим для гнезда SOCKET. В этом случае функция возвращает управление не ожидая ответа. Если функция выполнилась успешно, она возвращает значение 0, в противном случае возвращается -1. Переменная errno может принимать следующие значения: EBADF SOCKET не является дескриптором файла; ENOTSOCK SOCKET не является гнездом; EADDRNOTAVAIL заданный адрес не доступен на удаленной машине; EAFNOSUPPORT пространство имен, заданное в ADDR не поддерживается гнездом; EISCONN соединение для SOCKET уже установлено; ETIMEDOUT таймаут установки соединения; ECONNREFUSED сервер отказал в установлении соединения; ENETUNREACH сеть, заданная адресом ADDR недоступна с заданной машины; EADDRINUSE адрес гнезда, задаваемый ADDR уже используется; EINPROGRESS гнездо SOCKET находится в неблокируемом режиме и соединение не может быть установлено немедленно. EALREADY гнездо SOCKET не находится в неблокируемом режиме и находится в ожидании соединения. Прослушивание соединений В пространстве имен Интернет отсутствует механизм защиты, контролирующего доступ к порту; любой процесс на любой машине может подключиться к серверу. Для того, чтобы ограничить доступ к серверу, необходимо проверять адрес, с которого происходит попытка соединения или реализовать собственный протокол идентификации клиента. int listen (int SOCKET, unsigned int N) Функция listen разрешает гнезду SOCKET принимать соединения, делая его гнездом сервера. Использование функции недопустимо для способов взаимодействия, не требующих установления соединений. Аргумент N устанавливает размер очереди ожидающих соединений. Когда очередь заполнена, попытки новых клиентов соединиться завершаются с кодом ошибки ECONNREFUSED до тех пор, пока сервер не вызовет функцию accept, принимающую соединение из очереди. Функция возвращает 0 в случае успешного выполнения и -1 в случае ошибки. При ошибке переменная errno может принимать следующие значения: EBADF SOCKET не является правильным значением дескриптора файла; ENOTSOCK SOCKET не является гнездом; EOPNOTSUPP гнездо SOCKET не поддерживает эту операцию. 53
Страницы
- « первая
- ‹ предыдущая
- …
- 51
- 52
- 53
- 54
- 55
- …
- следующая ›
- последняя »