pub enum SocketAddr {
V4(SocketAddrV4),
V6(SocketAddrV6),
}Expand description
An internet socket address, either IPv4 or IPv6.
Internet socket addresses consist of an IP address, a 16-bit port number, as well
as possibly some version-dependent additional information. See SocketAddrV4โs and
SocketAddrV6โs respective documentation for more details.
ยงPortability
SocketAddr is intended to be a portable representation of socket addresses and is likely not
the same as the internal socket address type used by the target operating systemโs API. Like all
repr(Rust) structs, however, its exact layout remains undefined and should not be relied upon
between builds.
ยงExamples
Variantsยง
Implementationsยง
Sourceยงimpl SocketAddr
impl SocketAddr
Sourcepub fn parse_ascii(b: &[u8]) -> Result<SocketAddr, AddrParseError>
๐ฌThis is a nightly-only experimental API. (addr_parse_ascii #101035)
pub fn parse_ascii(b: &[u8]) -> Result<SocketAddr, AddrParseError>
addr_parse_ascii #101035)Parse a socket address from a slice of bytes.
#![feature(addr_parse_ascii)]
use std::net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr};
let socket_v4 = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080);
let socket_v6 = SocketAddr::new(IpAddr::V6(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1)), 8080);
assert_eq!(SocketAddr::parse_ascii(b"127.0.0.1:8080"), Ok(socket_v4));
assert_eq!(SocketAddr::parse_ascii(b"[::1]:8080"), Ok(socket_v6));Sourceยงimpl SocketAddr
impl SocketAddr
1.7.0 (const: 1.69.0) ยท Sourcepub const fn new(ip: IpAddr, port: u16) -> SocketAddr
pub const fn new(ip: IpAddr, port: u16) -> SocketAddr
Creates a new socket address from an IP address and a port number.
ยงExamples
1.7.0 (const: 1.69.0) ยท Sourcepub const fn ip(&self) -> IpAddr
pub const fn ip(&self) -> IpAddr
Returns the IP address associated with this socket address.
ยงExamples
1.9.0 (const: 1.87.0) ยท Sourcepub const fn set_ip(&mut self, new_ip: IpAddr)
pub const fn set_ip(&mut self, new_ip: IpAddr)
Changes the IP address associated with this socket address.
ยงExamples
1.0.0 (const: 1.69.0) ยท Sourcepub const fn port(&self) -> u16
pub const fn port(&self) -> u16
Returns the port number associated with this socket address.
ยงExamples
1.9.0 (const: 1.87.0) ยท Sourcepub const fn set_port(&mut self, new_port: u16)
pub const fn set_port(&mut self, new_port: u16)
Changes the port number associated with this socket address.
ยงExamples
1.16.0 (const: 1.69.0) ยท Sourcepub const fn is_ipv4(&self) -> bool
pub const fn is_ipv4(&self) -> bool
Returns true if the IP address in this SocketAddr is an
IPv4 address, and false otherwise.
ยงExamples
1.16.0 (const: 1.69.0) ยท Sourcepub const fn is_ipv6(&self) -> bool
pub const fn is_ipv6(&self) -> bool
Returns true if the IP address in this SocketAddr is an
IPv6 address, and false otherwise.
ยงExamples
Sourcepub const fn unspecified_from(this: SocketAddr) -> SocketAddr
๐ฌThis is a nightly-only experimental API. (addr_unspecified_from #158975)
pub const fn unspecified_from(this: SocketAddr) -> SocketAddr
addr_unspecified_from #158975)Returns the unspecified socket address for the same IP version.
Returns 0.0.0.0:0 for IPv4 and [::]:0 for IPv6. For IPv6, this
method preserves the flow information and scope ID.
Use this method when you must bind a socket to an unspecified local address that uses the same IP version as a remote address.
ยงExamples
#![feature(addr_unspecified_from)]
use std::net::{SocketAddr, SocketAddrV4, SocketAddrV6, Ipv4Addr, Ipv6Addr};
let addr = SocketAddr::V4(SocketAddrV4::new(Ipv4Addr::new(127, 0, 0, 1), 3000));
assert_eq!(
SocketAddr::unspecified_from(addr),
SocketAddr::V4(SocketAddrV4::new(Ipv4Addr::UNSPECIFIED, 0))
);
let addr = SocketAddr::V6(SocketAddrV6::new(
Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 1),
443,
0x1234,
5,
));
let unspecified = SocketAddr::unspecified_from(addr);
assert_eq!(unspecified.ip(), Ipv6Addr::UNSPECIFIED);
if let SocketAddr::V6(v6) = unspecified {
assert_eq!(v6.flowinfo(), 0x1234);
assert_eq!(v6.scope_id(), 5);
}Trait Implementationsยง
1.0.0 ยท Sourceยงimpl Clone for SocketAddr
impl Clone for SocketAddr
Sourceยงfn clone(&self) -> SocketAddr
fn clone(&self) -> SocketAddr
1.0.0 (const: unstable) ยท Sourceยงfn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for SocketAddr
1.0.0 ยท Sourceยงimpl Debug for SocketAddr
impl Debug for SocketAddr
1.0.0 ยท Sourceยงimpl Display for SocketAddr
impl Display for SocketAddr
impl Eq for SocketAddr
1.17.0 (const: unstable) ยท Sourceยงimpl<I> From<(I, u16)> for SocketAddr
impl<I> From<(I, u16)> for SocketAddr
Sourceยงfn from(pieces: (I, u16)) -> SocketAddr
fn from(pieces: (I, u16)) -> SocketAddr
Converts a tuple struct (Into<IpAddr>, u16) into a SocketAddr.
This conversion creates a SocketAddr::V4 for an IpAddr::V4
and creates a SocketAddr::V6 for an IpAddr::V6.
u16 is treated as port of the newly created SocketAddr.
1.16.0 (const: unstable) ยท Sourceยงimpl From<SocketAddrV4> for SocketAddr
impl From<SocketAddrV4> for SocketAddr
Sourceยงfn from(sock4: SocketAddrV4) -> SocketAddr
fn from(sock4: SocketAddrV4) -> SocketAddr
Converts a SocketAddrV4 into a SocketAddr::V4.
1.16.0 (const: unstable) ยท 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.0.0 ยท Sourceยงimpl FromStr for SocketAddr
impl FromStr for SocketAddr
Sourceยงtype Err = AddrParseError
type Err = AddrParseError
Sourceยงfn from_str(s: &str) -> Result<SocketAddr, AddrParseError>
fn from_str(s: &str) -> Result<SocketAddr, AddrParseError>
s to return a value of this type. Read more1.0.0 ยท Sourceยงimpl Hash for SocketAddr
impl Hash for SocketAddr
1.0.0 ยท Sourceยงimpl Ord for SocketAddr
impl Ord for SocketAddr
Sourceยงfn cmp(&self, other: &SocketAddr) -> Ordering
fn cmp(&self, other: &SocketAddr) -> Ordering
1.21.0 (const: unstable) ยท Sourceยงfn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
1.0.0 ยท Sourceยงimpl PartialEq for SocketAddr
impl PartialEq for SocketAddr
1.0.0 ยท Sourceยงimpl PartialOrd for SocketAddr
impl PartialOrd for SocketAddr
impl StructuralPartialEq for SocketAddr
1.0.0 ยท Sourceยงimpl ToSocketAddrs for SocketAddr
impl ToSocketAddrs for SocketAddr
Sourceยง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>>
SocketAddrs. Read more