Это типичное использование сокетов POSIX:
- создать с использованием
socket
- Хотите подключиться к серверу?
- да:
connect
+ взаимодействовать - нет, вы являетесь сервером:
bind
-
listen
если это протокол с установлением соединения (например, TCP) accept
+ взаимодействовать с созданным клиентским сокетом
Почему два звонка, bind
и listen
? В чем причина такого неинтуитивного API?
Разве они не могут быть объединены в один? Например:
1037
С серверным сокетом, ориентированным на соединение, вы ничего не сможете сделать, если не наберете bind
и listen
. Таким образом, вы можете также объединить их в один вызов: либо bind
, либо bind_conn
.
. Есть ли вариант использования, который требует, чтобы эти две функции были отдельными и не могли быть объединены в одну, как показано над? Или случай, в котором это было бы просто непрактично?
Примечание: я не спрашиваю, в чем разница между bind
и listen
или как их использовать. Этот вопрос не является дубликатом. Я хочу знать, каково обоснование между bind
+ listen
API.