Привязка сокета к локальному адресу. Клиентская программа при вызове функции connect() может позволить операционной системе выбрать используемый IP-адрес и номер порта, а сервер должен иметь известный адрес, чтобы к нему могли обращаться клиенты. По этой причине он должен явно указать, с каким локальным IP-адресом и номером порта будет использоваться сокет; этот процесс называется “связыванием” (binding). Для выполнения этого действия применяется функция bind().
Регистрация сокета в качестве приемного. Сервер вызывает функцию listen(), которая сообщает операционной системе, что данный сокет будет применяться для приема входящих запросов на установление соединений. В вызове этой функции должно быть также указано число входящих соединений, которые могут быть поставлены в очередь для ожидания того момента, когда сервер сможет их принять.Сокет, который зарегистрирован таким образом, как готовый к приему входящих соединений, называется приемным.
Прием входящих запросов на установление соединения. Теперь сервер вызывает функцию accept(), как правило, в цикле. При каждом вызове функция accept() ожидает входящий запрос на установление соединения, а затем возвращает новый подключенный сокет, который соединен с другим участником соединения. Эта операция не влияет на работу приемного сокета.