Struct core::net::socket_addr::SocketAddrV6
1.0.0 · source · pub struct SocketAddrV6 {
ip: Ipv6Addr,
port: u16,
flowinfo: u32,
scope_id: u32,
}
Expand description
An IPv6 socket address.
IPv6 socket addresses consist of an IPv6
address, a 16-bit port number, as well
as fields containing the traffic class, the flow label, and a scope identifier
(see IETF RFC 2553, Section 3.3 for more details).
See SocketAddr
for a type encompassing both IPv4 and IPv6 socket addresses.
The size of a SocketAddrV6
struct may vary depending on the target operating
system. Do not assume that this type has the same memory layout as the underlying
system representation.
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);
RunFields§
§ip: Ipv6Addr
§port: u16
§flowinfo: u32
§scope_id: u32
Implementations§
source§impl SocketAddrV6
impl SocketAddrV6
sourcepub fn parse_ascii(b: &[u8]) -> Result<Self, AddrParseError>
🔬This is a nightly-only experimental API. (addr_parse_ascii
#101035)
pub fn parse_ascii(b: &[u8]) -> Result<Self, AddrParseError>
addr_parse_ascii
#101035)Parse an IPv6 socket address from a slice of bytes.
#![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
Creates a new socket address from an IPv6
address, a 16-bit port number,
and the flowinfo
and scope_id
fields.
For more information on the meaning and layout of the flowinfo
and scope_id
parameters, see IETF RFC 2553, Section 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);
Run1.9.0 · sourcepub fn set_ip(&mut self, new_ip: Ipv6Addr)
pub fn set_ip(&mut self, new_ip: Ipv6Addr)
Changes the IP address associated with this socket address.
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));
Runconst: 1.69.0 · sourcepub const fn flowinfo(&self) -> u32
pub const fn flowinfo(&self) -> u32
Returns the flow information associated with this address.
This information corresponds to the sin6_flowinfo
field in C’s netinet/in.h
,
as specified in IETF RFC 2553, Section 3.3.
It combines information about the flow label and the traffic class as specified
in IETF RFC 2460, respectively Section 6 and Section 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)
Changes the flow information associated with this socket address.
See SocketAddrV6::flowinfo
’s documentation for more details.
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
Returns the scope ID associated with this address.
This information corresponds to the sin6_scope_id
field in C’s netinet/in.h
,
as specified in IETF RFC 2553, Section 3.3.
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)
Changes the scope ID associated with this socket address.
See SocketAddrV6::scope_id
’s documentation for more details.
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
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
source§impl Eq for SocketAddrV6
impl Eq for SocketAddrV6
fn assert_receiver_is_total_eq(&self)
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
Converts a SocketAddrV6
into a 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
to return a value of this type. Read moresource§impl Hash for SocketAddrV6
impl Hash for SocketAddrV6
1.45.0 · source§impl Ord for SocketAddrV6
impl Ord for SocketAddrV6
source§fn cmp(&self, other: &SocketAddrV6) -> Ordering
fn cmp(&self, other: &SocketAddrV6) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere Self: Sized,
source§impl PartialEq<SocketAddrV6> for SocketAddrV6
impl PartialEq<SocketAddrV6> for SocketAddrV6
source§fn eq(&self, other: &SocketAddrV6) -> bool
fn eq(&self, other: &SocketAddrV6) -> bool
self
and other
values to be equal, and is used
by ==
.