Розетки POSIX - связывай и слушай - PullRequest
0 голосов
/ 06 апреля 2020

Это типичное использование сокетов POSIX:

  • создать с использованием socket
  • Хотите подключиться к серверу?
    • да: connect + взаимодействовать
    • нет, вы являетесь сервером:
      • bind
      • listen если это протокол с установлением соединения (например, TCP)
      • accept + взаимодействовать с созданным клиентским сокетом

Почему два звонка, bind и listen? В чем причина такого неинтуитивного API?

Разве они не могут быть объединены в один? Например:

1037

С серверным сокетом, ориентированным на соединение, вы ничего не сможете сделать, если не наберете bind и listen. Таким образом, вы можете также объединить их в один вызов: либо bind, либо bind_conn.

. Есть ли вариант использования, который требует, чтобы эти две функции были отдельными и не могли быть объединены в одну, как показано над? Или случай, в котором это было бы просто непрактично?

Примечание: я не спрашиваю, в чем разница между bind и listen или как их использовать. Этот вопрос не является дубликатом. Я хочу знать, каково обоснование между bind + listen API.

...