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

获取 selfTypeIdRead more

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

从拥有的值中借用。 Read more

执行转换。

执行转换。

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

执行转换。

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

执行转换。