| |
Соединение сокетов обычно происходит несимметрично. Один из процессов действует как сервер, а другой выполняет роль клиента. Сервер связывает свой сокет с предварительно указанным путем или адресом. После этого для сокетов вида SOCK_STREAM сервер вызывает функцию listen(), которая определяет, сколько запросов на соединение можно поставить в очередь. Клиент запрашивает соединение с сокетом сервера вызовом connect(), а сокет принимает некоторое соединение с помощью функции accept(). Синтаксис вызова listen() следующий:
#include <sys/socket.h>
int listen (int socket, int backlog );
Функция accept() используется сервером для принятия соединения с сокетом. При этом сокет в момент вызова функции должен уже иметь очередь запросов, созданную вызовом listen(). Если сервер устанавливает связь с клиентом, то функция accept() возвращает новый сокет-дескриптор, через который и происходит общение клиента с сервером. Пока устанавливается связь клиента с сервером, функция accept() блокирует другие запросы связи, а после установления связи "прослушивание"запросов возобновляется:
#include <sys/socket.h>
int accept( int socket, struct sockaddr *addr,
int *addrlen );
Функция connect() используется процессом-клиентом для установления связи с сервером:
#include <sys/socket.h>
int connect( int socket, struct sockaddr *name,
int namelength );
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |