Struct std::net::SocketAddrV6
1.0.0 · source · pub struct SocketAddrV6 { /* private fields */ }
Expand description
IPv6 套接字地址。
IPv6 套接字地址由一个 IPv6
地址 和一个 16 位端口号,以及包含流类别、流标签和作用域标识符的字段组成 (更多详细信息,请参见 IETF RFC 2553,第 3.3 节)。
有关同时包含 IPv4 和 IPv6 套接字地址的类型,请参见 SocketAddr
。
SocketAddrV6
结构体的大小可能会因目标操作系统而异。不要假设此类型与底层系统表示具有相同的内存布局。
Examples
use std::net::{Ipv6Addr, SocketAddrV6};
let socket = SocketAddrV6::new(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 1), 8080, 0, 0);
assert_eq!("[2001:db8::1]:8080".parse(), Ok(socket));
assert_eq!(socket.ip(), &Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 1));
assert_eq!(socket.port(), 8080);
RunImplementations§
source§impl SocketAddrV6
impl SocketAddrV6
sourcepub fn parse_ascii(b: &[u8]) -> Result<SocketAddrV6, AddrParseError>
🔬This is a nightly-only experimental API. (addr_parse_ascii
#101035)
pub fn parse_ascii(b: &[u8]) -> Result<SocketAddrV6, AddrParseError>
addr_parse_ascii
#101035)从字节片中解析 IPv6 套接字地址。
#![feature(addr_parse_ascii)]
use std::net::{Ipv6Addr, SocketAddrV6};
let socket = SocketAddrV6::new(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 1), 8080, 0, 0);
assert_eq!(SocketAddrV6::parse_ascii(b"[2001:db8::1]:8080"), Ok(socket));
Runsource§impl SocketAddrV6
impl SocketAddrV6
const: 1.69.0 · sourcepub const fn new(
ip: Ipv6Addr,
port: u16,
flowinfo: u32,
scope_id: u32
) -> SocketAddrV6
pub const fn new( ip: Ipv6Addr, port: u16, flowinfo: u32, scope_id: u32 ) -> SocketAddrV6
从 IPv6
address,16 位端口号以及 flowinfo
和 scope_id
字段创建新的套接字地址。
有关 flowinfo
和 scope_id
参数的含义和布局的更多信息,请参见 IETF RFC 2553,第 3.3 节。
Examples
use std::net::{SocketAddrV6, Ipv6Addr};
let socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 0);
Runconst: 1.69.0 · sourcepub const fn flowinfo(&self) -> u32
pub const fn flowinfo(&self) -> u32
返回与此地址关联的流信息。
该信息对应于 IETF RFC 2553,第 3.3 节 中指定的 C 的 netinet/in.h
中的 sin6_flowinfo
字段。
它结合了关于流标签和流量类别的信息,分别在 IETF RFC 2460,第 6 节 和 第 7 节 中指定。
Examples
use std::net::{SocketAddrV6, Ipv6Addr};
let socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 10, 0);
assert_eq!(socket.flowinfo(), 10);
Run1.9.0 · sourcepub fn set_flowinfo(&mut self, new_flowinfo: u32)
pub fn set_flowinfo(&mut self, new_flowinfo: u32)
更改与此套接字地址关联的流信息。
有关更多详细信息,请参见 SocketAddrV6::flowinfo
的文档。
Examples
use std::net::{SocketAddrV6, Ipv6Addr};
let mut socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 10, 0);
socket.set_flowinfo(56);
assert_eq!(socket.flowinfo(), 56);
Runconst: 1.69.0 · sourcepub const fn scope_id(&self) -> u32
pub const fn scope_id(&self) -> u32
返回与此地址关联的作用域 ID。
该信息对应于 IETF RFC 2553,第 3.3 节 中指定的 C 的 netinet/in.h
中的 sin6_scope_id
字段。
Examples
use std::net::{SocketAddrV6, Ipv6Addr};
let socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 78);
assert_eq!(socket.scope_id(), 78);
Run1.9.0 · sourcepub fn set_scope_id(&mut self, new_scope_id: u32)
pub fn set_scope_id(&mut self, new_scope_id: u32)
更改与此套接字地址关联的作用域 ID。
有关更多详细信息,请参见 SocketAddrV6::scope_id
的文档。
Examples
use std::net::{SocketAddrV6, Ipv6Addr};
let mut socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 78);
socket.set_scope_id(42);
assert_eq!(socket.scope_id(), 42);
RunTrait Implementations§
source§impl Clone for SocketAddrV6
impl Clone for SocketAddrV6
source§fn clone(&self) -> SocketAddrV6
fn clone(&self) -> SocketAddrV6
返回值的副本。 Read more
source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
从
source
执行复制分配。 Read moresource§impl Debug for SocketAddrV6
impl Debug for SocketAddrV6
source§impl Display for SocketAddrV6
impl Display for SocketAddrV6
1.16.0 · source§impl From<SocketAddrV6> for SocketAddr
impl From<SocketAddrV6> for SocketAddr
source§fn from(sock6: SocketAddrV6) -> SocketAddr
fn from(sock6: SocketAddrV6) -> SocketAddr
将 SocketAddrV6
转换为 SocketAddr::V6
。
1.5.0 · source§impl FromStr for SocketAddrV6
impl FromStr for SocketAddrV6
§type Err = AddrParseError
type Err = AddrParseError
可以从解析中返回的相关错误。
source§fn from_str(s: &str) -> Result<SocketAddrV6, AddrParseError>
fn from_str(s: &str) -> Result<SocketAddrV6, AddrParseError>
解析字符串
s
以返回此类型的值。 Read moresource§impl Hash for SocketAddrV6
impl Hash for SocketAddrV6
1.45.0 · source§impl Ord for SocketAddrV6
impl Ord for SocketAddrV6
source§impl PartialEq<SocketAddrV6> for SocketAddrV6
impl PartialEq<SocketAddrV6> for SocketAddrV6
1.45.0 · source§impl PartialOrd<SocketAddrV6> for SocketAddrV6
impl PartialOrd<SocketAddrV6> for SocketAddrV6
source§fn partial_cmp(&self, other: &SocketAddrV6) -> Option<Ordering>
fn partial_cmp(&self, other: &SocketAddrV6) -> Option<Ordering>
source§impl ToSocketAddrs for SocketAddrV6
impl ToSocketAddrs for SocketAddrV6
§type Iter = IntoIter<SocketAddr>
type Iter = IntoIter<SocketAddr>
在此类型可能对应的套接字地址上返回的迭代器。
source§fn to_socket_addrs(&self) -> Result<IntoIter<SocketAddr>>
fn to_socket_addrs(&self) -> Result<IntoIter<SocketAddr>>
将此对象转换为已解析的
SocketAddr
的迭代器。 Read moreimpl Copy for SocketAddrV6
impl Eq for SocketAddrV6
impl StructuralEq for SocketAddrV6
impl StructuralPartialEq for SocketAddrV6
Auto Trait Implementations§
impl RefUnwindSafe for SocketAddrV6
impl Send for SocketAddrV6
impl Sync for SocketAddrV6
impl Unpin for SocketAddrV6
impl UnwindSafe for SocketAddrV6
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
从拥有的值中借用。 Read more