Функція прийняття витягує перше з’єднання з черги незавершених з’єднань на сокет s. Потім він створює та повертає дескриптор нового сокета. 5 грудня 2022 р
Системний виклик accept() із типами сокетів на основі з’єднання (SOCK_STREAM, SOCK_SEQPACKET). Він витягує перший запит на з’єднання з черги незавершених з’єднань для прослуховуваного сокета, sockfd, створює новий підключений сокет і повертає новий файловий дескриптор, що посилається на цей сокет.
Один із способів розблокувати блокуючий accept() – це закрийте сокет для прослуховування з іншого потоку. В іншому випадку ви можете перевести слухаючий сокет у неблокуючий режим і використати select() (який підтримує тайм-аут), щоб визначити, коли accept() можна викликати без блокування.
Виклик вказує на сокет, який раніше був створений викликом SOCKET і позначений викликом LISTEN. Виклик ACCEPT є блокуючим. Коли надходить виклик ACCEPT: приймає перше з’єднання в черзі з’єднань, що очікують на розгляд.
Функція accept() витягує перше з’єднання з черги з’єднань, що очікують на розгляд, створює новий сокет із тим самим протоколом типу сокета та родиною адрес, що й вказаний сокет, і виділяє новий файловий дескриптор для цього сокета.
Це приймає отриману вхідну спробу створити нове TCP-з'єднання від віддаленого клієнта та створює новий сокет, пов'язаний з парою адрес сокетів цього з'єднання. Іншими словами, accept повертає новий сокет, через який сервер може спілкуватися з щойно підключеним клієнтом.