Struct std::os::unix::net::UnixListener1.10.0[−][src]

pub struct UnixListener(_);
This is supported on Unix only.
Expand description

表示 Unix 域套接字服务器的结构体。

Examples

use std::thread;
use std::os::unix::net::{UnixStream, UnixListener};

fn handle_client(stream: UnixStream) {
    // ...
}

fn main() -> std::io::Result<()> {
    let listener = UnixListener::bind("/path/to/the/socket")?;

    // 接受连接并处理它们,为每个连接产生一个新线程
    for stream in listener.incoming() {
        match stream {
            Ok(stream) => {
                /* connection succeeded */
                thread::spawn(|| handle_client(stream));
            }
            Err(err) => {
                /* connection failed */
                break;
            }
        }
    }
    Ok(())
}
Run

Implementations

创建绑定到指定套接字的新 UnixListener。

Examples

use std::os::unix::net::UnixListener;

let listener = match UnixListener::bind("/path/to/the/socket") {
    Ok(sock) => sock,
    Err(e) => {
        println!("Couldn't connect: {:?}", e);
        return
    }
};
Run

接受与此侦听器的新传入连接。

该函数将阻塞调用线程,直到建立新的 Unix 连接为止。 建立后,将返回相应的 UnixStream 和远程对等方的地址。

Examples

use std::os::unix::net::UnixListener;

fn main() -> std::io::Result<()> {
    let listener = UnixListener::bind("/path/to/the/socket")?;

    match listener.accept() {
        Ok((socket, addr)) => println!("Got a client: {:?}", addr),
        Err(e) => println!("accept function failed: {:?}", e),
    }
    Ok(())
}
Run

为基础套接字创建一个新的独立拥有的句柄。

返回的 UnixListener 是与此 object 引用相同的套接字的引用。 这两个句柄均可用于接受传入连接,并且在一个侦听器上设置的选项将影响另一个。

Examples

use std::os::unix::net::UnixListener;

fn main() -> std::io::Result<()> {
    let listener = UnixListener::bind("/path/to/the/socket")?;
    let listener_copy = listener.try_clone().expect("try_clone failed");
    Ok(())
}
Run

返回此侦听器的本地套接字地址。

Examples

use std::os::unix::net::UnixListener;

fn main() -> std::io::Result<()> {
    let listener = UnixListener::bind("/path/to/the/socket")?;
    let addr = listener.local_addr().expect("Couldn't get local address");
    Ok(())
}
Run

将套接字移入或移出非阻塞模式。

这将导致 accept 操作变为非阻塞,即立即从其调用中返回。 如果 IO 操作成功,则返回 Ok,并且不需要进一步的操作。 如果 IO 操作无法完成,需要重试,则返回类型为 io::ErrorKind::WouldBlock 的错误。

Examples

use std::os::unix::net::UnixListener;

fn main() -> std::io::Result<()> {
    let listener = UnixListener::bind("/path/to/the/socket")?;
    listener.set_nonblocking(true).expect("Couldn't set non blocking");
    Ok(())
}
Run

返回 SO_ERROR 选项的值。

Examples

use std::os::unix::net::UnixListener;

fn main() -> std::io::Result<()> {
    let listener = UnixListener::bind("/tmp/sock")?;

    if let Ok(Some(err)) = listener.take_error() {
        println!("Got error: {:?}", err);
    }
    Ok(())
}
Run

特定于平台

在 Redox 上,它总是返回 None。

返回传入连接上的迭代器。

迭代器将永远不会返回 None,也不会产生对等方的 SocketAddr 结构体。

Examples

use std::thread;
use std::os::unix::net::{UnixStream, UnixListener};

fn handle_client(stream: UnixStream) {
    // ...
}

fn main() -> std::io::Result<()> {
    let listener = UnixListener::bind("/path/to/the/socket")?;

    for stream in listener.incoming() {
        match stream {
            Ok(stream) => {
                thread::spawn(|| handle_client(stream));
            }
            Err(err) => {
                break;
            }
        }
    }
    Ok(())
}
Run

Trait Implementations

提取原始文件描述符。 Read more

使用给定的格式化程序格式化该值。 Read more

根据给定的原始文件描述符构造 Self 的新实例。 Read more

被迭代的元素的类型。

我们将其变成哪种迭代器?

从一个值创建一个迭代器。 Read more

使用此 object,返回原始基础文件描述符。 Read more

Auto Trait Implementations

Blanket Implementations

获取 self 的 TypeId。 Read more

从拥有的值中一成不变地借用。 Read more

从拥有的值中借用。 Read more

执行转换。

执行转换。

发生转换错误时返回的类型。

执行转换。

发生转换错误时返回的类型。

执行转换。