Struct std::os::unix::net::SocketAddr 1.10.0[−][src]
pub struct SocketAddr { /* fields omitted */ }
This is supported on Unix only.
Expand description
Implementations
如果地址未命名,则返回 true
。
Examples
命名地址:
use std::os::unix::net::UnixListener;
fn main() -> std::io::Result<()> {
let socket = UnixListener::bind("/tmp/sock")?;
let addr = socket.local_addr().expect("Couldn't get local address");
assert_eq!(addr.is_unnamed(), false);
Ok(())
}
Run一个未命名的地址:
use std::os::unix::net::UnixDatagram;
fn main() -> std::io::Result<()> {
let socket = UnixDatagram::unbound()?;
let addr = socket.local_addr().expect("Couldn't get local address");
assert_eq!(addr.is_unnamed(), true);
Ok(())
}
Run如果它是 pathname
地址,则返回该地址的内容。
Examples
带有路径名:
use std::os::unix::net::UnixListener;
use std::path::Path;
fn main() -> std::io::Result<()> {
let socket = UnixListener::bind("/tmp/sock")?;
let addr = socket.local_addr().expect("Couldn't get local address");
assert_eq!(addr.as_pathname(), Some(Path::new("/tmp/sock")));
Ok(())
}
Run没有路径名:
use std::os::unix::net::UnixDatagram;
fn main() -> std::io::Result<()> {
let socket = UnixDatagram::unbound()?;
let addr = socket.local_addr().expect("Couldn't get local address");
assert_eq!(addr.as_pathname(), None);
Ok(())
}
RunThis is supported on Android or Linux only.
This is supported on Android or Linux only.
如果它是一个没有前导空字节的抽象命名空间,则返回此地址的内容。
Examples
#![feature(unix_socket_abstract)]
use std::os::unix::net::{UnixListener, SocketAddr};
fn main() -> std::io::Result<()> {
let namespace = b"hidden";
let namespace_addr = SocketAddr::from_abstract_namespace(&namespace[..])?;
let socket = UnixListener::bind_addr(&namespace_addr)?;
let local_addr = socket.local_addr().expect("Couldn't get local address");
assert_eq!(local_addr.as_abstract_namespace(), Some(&namespace[..]));
Ok(())
}
RunThis is supported on Android or Linux only.
This is supported on Android or Linux only.
从命名空间创建抽象域套接字地址
与传统的基于路径的 Unix 套接字不同,抽象地址不会创建文件。 这样做的好处是当绑定到它的套接字关闭时,地址将消失,因此不需要清理文件系统。
自动添加抽象命名空间的前导空字节。
这是一个特定于 Linux 的扩展。有关详细信息,请参见 unix(7)
。
Errors
如果给定的命名空间太长,这将返回一个错误
Examples
#![feature(unix_socket_abstract)]
use std::os::unix::net::{UnixListener, SocketAddr};
fn main() -> std::io::Result<()> {
let addr = SocketAddr::from_abstract_namespace(b"hidden")?;
let listener = match UnixListener::bind_addr(&addr) {
Ok(sock) => sock,
Err(err) => {
println!("Couldn't bind: {:?}", err);
return Err(err);
}
};
Ok(())
}
Run