Spec-Zone.ru › Tokio

Структура UnixSocket

pub struct UnixSocket { /* private fields */ }
Доступно только в Unix и при включённой возможности пакета net.

Сокет Unix, который ещё не был преобразован в UnixStream, UnixDatagram или UnixListener.

UnixSocket оборачивает сокет операционной системы и позволяет вызывающему коду настроить его перед установлением соединения или приёмом входящих соединений. Вызывающий код может задать параметр сокета и явно привязать сокет к адресу.

Базовый сокет закрывается при удалении значения UnixSocket.

UnixSocket следует использовать напрямую только в том случае, если конфигурация по умолчанию, используемая UnixStream::connect, UnixDatagram::bind и UnixListener::bind, не подходит для нужного сценария.

Вызов UnixStream::connect(path) фактически выполняет ту же функцию, что и:

use tokio::net::UnixSocket;
use std::error::Error;

#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
    let dir = tempfile::tempdir().unwrap();
    let path = dir.path().join("bind_path");
    let socket = UnixSocket::new_stream()?;

    let stream = socket.connect(path).await?;

    Ok(())
}

Вызов UnixDatagram::bind(path) фактически выполняет ту же функцию, что и:

use tokio::net::UnixSocket;
use std::error::Error;

#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
    let dir = tempfile::tempdir().unwrap();
    let path = dir.path().join("bind_path");
    let socket = UnixSocket::new_datagram()?;
    socket.bind(path)?;

    let datagram = socket.datagram()?;

    Ok(())
}

Вызов UnixListener::bind(path) фактически выполняет ту же функцию, что и:

use tokio::net::UnixSocket;
use std::error::Error;

#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
    let dir = tempfile::tempdir().unwrap();
    let path = dir.path().join("bind_path");
    let socket = UnixSocket::new_stream()?;
    socket.bind(path)?;

    let listener = socket.listen(1024)?;

    Ok(())
}

Параметры сокета, явно не предоставляемые UnixSocket, можно задать, получив доступ к RawFd/RawSocket с помощью AsRawFd/AsRawSocket и задав параметр с помощью такого пакета, как socket2.

Реализации

impl UnixSocket

pub fn new_datagram() -> Result<UnixSocket>

Создаёт новый сокет Unix для дейтаграмм.

Вызывает socket(2) с AF_UNIX и SOCK_DGRAM.

Возвращает

В случае успеха возвращается только что созданный UnixSocket. Если возникает ошибка, вместо него возвращается она.

pub fn new_stream() -> Result<UnixSocket>

Создаёт новый потоковый сокет Unix.

Вызывает socket(2) с AF_UNIX и SOCK_STREAM.

Возвращает

В случае успеха возвращается только что созданный UnixSocket. Если возникает ошибка, вместо него возвращается она.

pub fn bind(&self, path: impl AsRef<Path>) -> Result<()>

Привязывает сокет к указанному адресу.

Вызывает функцию операционной системы bind(2).

pub fn listen(self, backlog: u32) -> Result<UnixListener>

Преобразует сокет в UnixListener.

backlog задаёт максимальное количество ожидающих подключений, которые операционная система может одновременно держать в очереди. Подключения удаляются из очереди с помощью UnixListener::accept. Когда очередь заполнена, операционная система начинает отклонять подключения.

Вызов этой функции для сокета, созданного с помощью new_datagram, вернёт ошибку.

Вызывает функцию операционной системы listen(2), помечая сокет как пассивный.

pub async fn connect(self, path: impl AsRef<Path>) -> Result<UnixStream>

Устанавливает соединение Unix с узлом по указанному адресу сокета.

UnixSocket используется. После установки соединения возвращается подключённый UnixStream. Если подключиться не удаётся, возвращается возникшая ошибка.

Вызов этой функции для сокета, созданного с помощью new_datagram, вернёт ошибку.

Вызывает функцию операционной системы connect(2).

pub fn datagram(self) -> Result<UnixDatagram>

Преобразует сокет в UnixDatagram.

Вызов этой функции для сокета, созданного с помощью new_stream, вернёт ошибку.

Реализации трейтов

impl AsFd for UnixSocket

fn as_fd(&self) -> BorrowedFd<'_>

Заимствует файловый дескриптор. Подробнее

impl AsRawFd for UnixSocket

fn as_raw_fd(&self) -> RawFd

Извлекает исходный файловый дескриптор. Подробнее

impl Debug for UnixSocket

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Форматирует значение с помощью указанного форматировщика. Подробнее

impl FromRawFd for UnixSocket

unsafe fn from_raw_fd(fd: RawFd) -> UnixSocket

Создает новый экземпляр Self из указанного исходного файлового дескриптора. Подробнее

impl IntoRawFd for UnixSocket

fn into_raw_fd(self) -> RawFd

Потребляет этот объект и возвращает исходный базовый файловый дескриптор. Подробнее

Автоматические реализации трейтов

impl Freeze for UnixSocket

impl RefUnwindSafe for UnixSocket

impl Send for UnixSocket

impl Sync for UnixSocket

impl Unpin for UnixSocket

impl UnsafeUnpin for UnixSocket

impl UnwindSafe for UnixSocket

Обобщённые реализации

impl<T> Any for T
where T: 'static + ?Sized,

fn type_id(&self) -> TypeId

Получает TypeId для self. Подробнее

impl<T> Borrow<T> for T
where T: ?Sized,

fn borrow(&self) -> &T

Неизменяемо заимствует данные из принадлежащего значения. Подробнее

impl<T> BorrowMut<T> for T
where T: ?Sized,

fn borrow_mut(&mut self) -> &mut T

Изменяемо заимствует данные из принадлежащего значения. Подробнее

impl<T> From<T> for T

fn from(t: T) -> T

Возвращает аргумент без изменений.

impl<T> Instrument for T

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Инструментирует этот тип с помощью предоставленного Span и возвращает обёртку Instrumented. Подробнее

fn in_current_span(self) -> Instrumented<Self> ⓘ

Инструментирует этот тип с помощью текущего Span и возвращает обёртку Instrumented. Подробнее

impl<T, U> Into<U> for T
where U: From<T>,

fn into(self) -> U

Вызывает U::from(self).

То есть это преобразование выполняет именно то, что выберет реализация From<T> for U.

impl<T, U> TryFrom<U> for T
where U: Into<T>,

type Error = Infallible

Тип, возвращаемый в случае ошибки преобразования.

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Выполняет преобразование.

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

type Error = <U as TryFrom<T>>::Error

Тип, возвращаемый в случае ошибки преобразования.

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Выполняет преобразование.

impl<T> WithSubscriber for T

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Присоединяет предоставленный Subscriber к этому типу, возвращая обёртку WithDispatch. Подробнее

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Присоединяет текущий используемый по умолчанию Subscriber к этому типу, возвращая обёртку WithDispatch. Подробнее

MIT License
Copyright © Tokio Contributors
https://docs.rs/tokio/1.53.1/tokio/net/struct.UnixSocket.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API