Я реализую простой сервис, используя дейтаграммы через локальные сокеты unix (семейство адресов AF_UNIX, то есть не UDP). Сервер привязан к общедоступному адресу, и он получает запросы просто отлично. К сожалению, когда дело доходит до ответа, sendto
терпит неудачу, если клиент не связан тоже. (общая ошибка Transport endpoint is not connected
).Автоматическое присвоение имен локальных дейтаграмм AF_UNIX?
Работает с некоторым случайным именем (на основе файловой системы или абстрактным). Но я бы хотел избежать этого: кто я такой, чтобы гарантировать, что имена, которые я выбрал, не будут сталкиваться?
Документация по режиму потока сокетов UNIX сообщает нам, что абстрактное имя будет присвоено им по адресу connect
, если у них его еще нет. Является ли такая функция доступной для сокетов, ориентированных на датаграмму?
Отличный анализ, Роб! Большое спасибо! Кажется, что есть разные источники для manpages: на работе (какой-то старый SuSE) они явно ограничивают эффект autobind-on-connect для потоковых сокетов. Дома у меня такое же предложение, как и вы. В конечном счете, я запомню это как связывание с пустым путем. – 2008-09-20 13:52:25