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
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
let socket = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080);
assert_eq!("127.0.0.1:8080".parse(), Ok(socket));
assert_eq!(socket.port(), 8080);
assert_eq!(socket.is_ipv4(), true);
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
)
pub fn parse_ascii(b: &[u8]) -> Result<SocketAddr, AddrParseError>
addr_parse_ascii
)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
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
let socket = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080);
assert_eq!(socket.ip(), IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)));
assert_eq!(socket.port(), 8080);
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
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
let socket = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080);
assert_eq!(socket.ip(), IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)));
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
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
let mut socket = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080);
socket.set_ip(IpAddr::V4(Ipv4Addr::new(10, 10, 0, 1)));
assert_eq!(socket.ip(), IpAddr::V4(Ipv4Addr::new(10, 10, 0, 1)));
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
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
let socket = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080);
assert_eq!(socket.port(), 8080);
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
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
let mut socket = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080);
socket.set_port(1025);
assert_eq!(socket.port(), 1025);
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
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
let socket = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080);
assert_eq!(socket.is_ipv4(), true);
assert_eq!(socket.is_ipv6(), false);
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
use std::net::{IpAddr, Ipv6Addr, SocketAddr};
let socket = SocketAddr::new(IpAddr::V6(Ipv6Addr::new(0, 0, 0, 0, 0, 65535, 0, 1)), 8080);
assert_eq!(socket.is_ipv4(), false);
assert_eq!(socket.is_ipv6(), true);
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 ยท Sourceยงfn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more1.0.0 ยท Sourceยงimpl Debug for SocketAddr
impl Debug for SocketAddr
Sourceยงimpl<'de> Deserialize<'de> for SocketAddr
impl<'de> Deserialize<'de> for SocketAddr
Sourceยงfn deserialize<D>(
deserializer: D,
) -> Result<SocketAddr, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
fn deserialize<D>(
deserializer: D,
) -> Result<SocketAddr, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
1.0.0 ยท Sourceยงimpl Display for SocketAddr
impl Display 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 ยท 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
Sourceยงimpl Serialize for SocketAddr
impl Serialize for SocketAddr
Sourceยงfn serialize<S>(
&self,
serializer: S,
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
fn serialize<S>(
&self,
serializer: S,
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
Sourceยงimpl SocketAddrArg for SocketAddr
impl SocketAddrArg for SocketAddr
Sourceยงunsafe fn with_sockaddr<R>(
&self,
f: impl FnOnce(*const SocketAddrOpaque, u32) -> R,
) -> R
unsafe fn with_sockaddr<R>( &self, f: impl FnOnce(*const SocketAddrOpaque, u32) -> R, ) -> R
Sourceยงfn as_any(&self) -> SocketAddrAny
fn as_any(&self) -> SocketAddrAny
SocketAddrAny
.Sourceยงunsafe fn write_sockaddr(&self, storage: *mut SocketAddrStorage) -> u32
unsafe fn write_sockaddr(&self, storage: *mut SocketAddrStorage) -> u32
SocketAddrStorage
. Read more1.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>, Error>
fn to_socket_addrs(&self) -> Result<IntoIter<SocketAddr>, Error>
SocketAddr
s. Read moreSourceยงimpl ToSocketAddrs for SocketAddr
impl ToSocketAddrs for SocketAddr
Sourceยงtype Iter = IntoIter<SocketAddr>
type Iter = IntoIter<SocketAddr>
Sourceยงfn to_socket_addrs(&self) -> ImplFuture<Self::Iter>
fn to_socket_addrs(&self) -> ImplFuture<Self::Iter>
SocketAddr
s. Read moreSourceยงimpl TryFrom<SocketAddrAny> for SocketAddr
impl TryFrom<SocketAddrAny> for SocketAddr
Sourceยงfn try_from(
value: SocketAddrAny,
) -> Result<SocketAddr, <SocketAddr as TryFrom<SocketAddrAny>>::Error>
fn try_from( value: SocketAddrAny, ) -> Result<SocketAddr, <SocketAddr as TryFrom<SocketAddrAny>>::Error>
Convert if the address is an IPv4 or IPv6 address.
Returns Err(Errno::AFNOSUPPORT)
if the address family is not IPv4 or
IPv6.