Это невозможно. Это предполагает, что эти объекты имеют копии этих данных внутри. Что они могут или не могут (они на самом деле не делают).
Вместо функций используются функции getpeername
с sys/socket.h
на linux.
На windows или cygwin, Asio на самом деле кеширует удаленную конечную точку, проверяя, остается ли время соединения таким же, как и при последнем получении. Это по-прежнему означает, что вы не можете иметь ссылку.
Если вы используете Windows сокеты IOCP, тогда native_handle_type
будет дополнительно содержать копию удаленной конечной точки, которую можно проверить с помощью .have_remote_endpoint()
и извлекается с помощью .remote_endpoint()
(все еще по значению).
Сводка
Ссылки небезопасны в сценарии параллелизма ios. Время жизни объектов не зависит от мира с асинхронными операциями c.
Я чувствую, что ваш вопрос может быть вызван необходимостью оптимизации. В этом случае, безусловно, самым простым вариантом будет просто кэшировать значение самостоятельно в месте, где вы управляете временем жизни объекта.