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);
Run

Implementations§

source§

impl SocketAddrV6

source

pub fn parse_ascii(b: &[u8]) -> Result<SocketAddrV6, AddrParseError>

🔬This is a nightly-only experimental API. (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));
Run
source§

impl SocketAddrV6

const: 1.69.0 · source

pub const fn new( ip: Ipv6Addr, port: u16, flowinfo: u32, scope_id: u32 ) -> SocketAddrV6

IPv6 address,16 位端口号以及 flowinfoscope_id 字段创建新的套接字地址。

有关 flowinfoscope_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);
Run
const: 1.69.0 · source

pub const fn ip(&self) -> &Ipv6Addr

返回与此套接字地址关联的 IP 地址。

Examples
use std::net::{SocketAddrV6, Ipv6Addr};

let socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 0);
assert_eq!(socket.ip(), &Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1));
Run
1.9.0 · source

pub fn set_ip(&mut self, new_ip: Ipv6Addr)

更改与此套接字地址关联的 IP 地址。

Examples
use std::net::{SocketAddrV6, Ipv6Addr};

let mut socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 0);
socket.set_ip(Ipv6Addr::new(76, 45, 0, 0, 0, 0, 0, 0));
assert_eq!(socket.ip(), &Ipv6Addr::new(76, 45, 0, 0, 0, 0, 0, 0));
Run
const: 1.69.0 · source

pub const fn port(&self) -> u16

返回与此套接字地址关联的端口号。

Examples
use std::net::{SocketAddrV6, Ipv6Addr};

let socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 0);
assert_eq!(socket.port(), 8080);
Run
1.9.0 · source

pub fn set_port(&mut self, new_port: u16)

更改与此套接字地址关联的端口号。

Examples
use std::net::{SocketAddrV6, Ipv6Addr};

let mut socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 0);
socket.set_port(4242);
assert_eq!(socket.port(), 4242);
Run
const: 1.69.0 · source

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);
Run
1.9.0 · source

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);
Run
const: 1.69.0 · source

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);
Run
1.9.0 · source

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);
Run

Trait Implementations§

source§

impl Clone for SocketAddrV6

source§

fn clone(&self) -> SocketAddrV6

返回值的副本。 Read more
source§

fn clone_from(&mut self, source: &Self)

source 执行复制分配。 Read more
source§

impl Debug for SocketAddrV6

source§

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

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

impl Display for SocketAddrV6

source§

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

使用给定的格式化程序格式化该值。 Read more
1.16.0 · source§

impl From<SocketAddrV6> for SocketAddr

1.5.0 · source§

impl FromStr for SocketAddrV6

§

type Err = AddrParseError

可以从解析中返回的相关错误。
source§

fn from_str(s: &str) -> Result<SocketAddrV6, AddrParseError>

解析字符串 s 以返回此类型的值。 Read more
source§

impl Hash for SocketAddrV6

source§

fn hash<H>(&self, s: &mut H)where H: Hasher,

将该值输入给定的 HasherRead more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where H: Hasher, Self: Sized,

将这种类型的切片送入给定的 Hasher 中。 Read more
1.45.0 · source§

impl Ord for SocketAddrV6

source§

fn cmp(&self, other: &SocketAddrV6) -> Ordering

此方法返回 selfother 之间的 OrderingRead more
1.21.0 · source§

fn max(self, other: Self) -> Selfwhere Self: Sized,

比较并返回两个值中的最大值。 Read more
1.21.0 · source§

fn min(self, other: Self) -> Selfwhere Self: Sized,

比较并返回两个值中的最小值。 Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Selfwhere Self: Sized + PartialOrd<Self>,

将值限制在某个时间间隔内。 Read more
source§

impl PartialEq<SocketAddrV6> for SocketAddrV6

source§

fn eq(&self, other: &SocketAddrV6) -> bool

此方法测试 selfother 值是否相等,并由 == 使用。
source§

fn ne(&self, other: &Rhs) -> bool

此方法测试 !=。 默认实现几乎总是足够的,并且不应在没有充分理由的情况下被覆盖。
1.45.0 · source§

impl PartialOrd<SocketAddrV6> for SocketAddrV6

source§

fn partial_cmp(&self, other: &SocketAddrV6) -> Option<Ordering>

如果存在,则此方法返回 selfother 值之间的顺序。 Read more
source§

fn lt(&self, other: &Rhs) -> bool

此方法测试的内容少于 (对于 selfother),并且由 < 操作员使用。 Read more
source§

fn le(&self, other: &Rhs) -> bool

此方法测试小于或等于 (对于 selfother),并且由 <= 运算符使用。 Read more
source§

fn gt(&self, other: &Rhs) -> bool

此方法测试大于 (对于 selfother),并且由 > 操作员使用。 Read more
source§

fn ge(&self, other: &Rhs) -> bool

此方法测试是否大于或等于 (对于 selfother),并且由 >= 运算符使用。 Read more
source§

impl ToSocketAddrs for SocketAddrV6

§

type Iter = IntoIter<SocketAddr>

在此类型可能对应的套接字地址上返回的迭代器。
source§

fn to_socket_addrs(&self) -> Result<IntoIter<SocketAddr>>

将此对象转换为已解析的 SocketAddr 的迭代器。 Read more
source§

impl Copy for SocketAddrV6

source§

impl Eq for SocketAddrV6

source§

impl StructuralEq for SocketAddrV6

source§

impl StructuralPartialEq for SocketAddrV6

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

获取 selfTypeIdRead more
source§

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

source§

fn borrow(&self) -> &T

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

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

source§

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

从拥有的值中借用。 Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

返回未更改的参数。

source§

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

source§

fn into(self) -> U

调用 U::from(self)

也就是说,这种转换是 From<T> for U 实现选择执行的任何操作。

source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

获得所有权后的结果类型。
source§

fn to_owned(&self) -> T

从借用的数据创建拥有的数据,通常是通过克隆。 Read more
source§

fn clone_into(&self, target: &mut T)

使用借来的数据来替换拥有的数据,通常是通过克隆。 Read more
source§

impl<T> ToString for Twhere T: Display + ?Sized,

source§

default fn to_string(&self) -> String

将给定值转换为 StringRead more
source§

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

§

type Error = Infallible

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

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

执行转换。
source§

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

§

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

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

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

执行转换。