Struct SocketAddrV4

pub struct SocketAddrV4 { pub(in ::net::socket_addr) ip: Ipv4Addr, pub(in ::net::socket_addr) port: u16 }

An IPv4 socket address.

IPv4 socket addresses consist of an IPv4 address and a 16-bit port number, as stated in IETF RFC 793.

See SocketAddr for a type encompassing both IPv4 and IPv6 socket addresses.

Portability

SocketAddrV4 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.

Textual representation

SocketAddrV4 provides a FromStr implementation. It accepts an IPv4 address in its textual representation, followed by a single :, followed by the port encoded as a decimal integer. Other formats are not accepted.

Examples

use std::net::{Ipv4Addr, SocketAddrV4};

let socket = SocketAddrV4::new(Ipv4Addr::new(127, 0, 0, 1), 8080);

assert_eq!("127.0.0.1:8080".parse(), Ok(socket));
assert_eq!(socket.ip(), &Ipv4Addr::new(127, 0, 0, 1));
assert_eq!(socket.port(), 8080);

Fields

ip: Ipv4Addr
port: u16

Implementations

impl SocketAddrV4

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

Parse an IPv4 socket address from a slice of bytes.

#![feature(addr_parse_ascii)]

use std::net::{Ipv4Addr, SocketAddrV4};

let socket = SocketAddrV4::new(Ipv4Addr::new(127, 0, 0, 1), 8080);

assert_eq!(SocketAddrV4::parse_ascii(b"127.0.0.1:8080"), Ok(socket));

impl SocketAddrV4

const fn new(ip: Ipv4Addr, port: u16) -> SocketAddrV4

Creates a new socket address from an IPv4 address and a port number.

Examples

use std::net::{SocketAddrV4, Ipv4Addr};

let socket = SocketAddrV4::new(Ipv4Addr::new(127, 0, 0, 1), 8080);
const fn ip(&self) -> &Ipv4Addr

Returns the IP address associated with this socket address.

Examples

use std::net::{SocketAddrV4, Ipv4Addr};

let socket = SocketAddrV4::new(Ipv4Addr::new(127, 0, 0, 1), 8080);
assert_eq!(socket.ip(), &Ipv4Addr::new(127, 0, 0, 1));
const fn set_ip(&mut self, new_ip: Ipv4Addr)

Changes the IP address associated with this socket address.

Examples

use std::net::{SocketAddrV4, Ipv4Addr};

let mut socket = SocketAddrV4::new(Ipv4Addr::new(127, 0, 0, 1), 8080);
socket.set_ip(Ipv4Addr::new(192, 168, 0, 1));
assert_eq!(socket.ip(), &Ipv4Addr::new(192, 168, 0, 1));
const fn port(&self) -> u16

Returns the port number associated with this socket address.

Examples

use std::net::{SocketAddrV4, Ipv4Addr};

let socket = SocketAddrV4::new(Ipv4Addr::new(127, 0, 0, 1), 8080);
assert_eq!(socket.port(), 8080);
const fn set_port(&mut self, new_port: u16)

Changes the port number associated with this socket address.

Examples

use std::net::{SocketAddrV4, Ipv4Addr};

let mut socket = SocketAddrV4::new(Ipv4Addr::new(127, 0, 0, 1), 8080);
socket.set_port(4242);
assert_eq!(socket.port(), 4242);

Trait Implementations

impl Clone for SocketAddrV4

fn clone(&self) -> SocketAddrV4

impl Copy for SocketAddrV4

impl Debug for SocketAddrV4

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

impl Display for SocketAddrV4

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

impl Eq for SocketAddrV4

fn assert_fields_are_eq(&self)

impl FromStr for SocketAddrV4

type Err = AddrParseError;
fn from_str(s: &str) -> Result<SocketAddrV4, AddrParseError>

impl Hash for SocketAddrV4

fn hash<__H: Hasher>(&self, state: &mut __H)

impl Ord for SocketAddrV4

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

impl PartialEq for SocketAddrV4

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

impl PartialOrd for SocketAddrV4

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

impl StructuralPartialEq for SocketAddrV4

impl TrivialClone for SocketAddrV4

Auto Trait Implementations

impl Freeze for SocketAddrV4

impl RefUnwindSafe for SocketAddrV4

impl Send for SocketAddrV4

impl Sync for SocketAddrV4

impl Unpin for SocketAddrV4

impl UnsafeUnpin for SocketAddrV4

impl UnwindSafe for SocketAddrV4

Blanket Implementations

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

fn type_id(&self) -> TypeId

impl<T> Borrow<T> for SocketAddrV4 where T: ?Sized,

fn borrow(&self) -> &T

impl<T> BorrowMut<T> for SocketAddrV4 where T: ?Sized,

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

impl<T> CloneToUninit for SocketAddrV4 where T: Clone,

unsafe fn clone_to_uninit(&self, dest: *mut u8)

impl<T> From<T> for SocketAddrV4

fn from(t: T) -> T

Returns the argument unchanged.

impl<T> Printable for SocketAddrV4 where T: Copy + Debug,

impl<T> SizeHint for SocketAddrV4 where T: ?Sized,

fn lower_bound(&self) -> usize
fn upper_bound(&self) -> Option<usize>

impl<T> SizedTypeProperties for SocketAddrV4

impl<T, U> Into<U> for SocketAddrV4 where U: From<T>,

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of [From]<T> for U chooses to do.

impl<T, U> TryFrom<U> for SocketAddrV4 where U: Into<T>,

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

impl<T, U> TryInto<U> for SocketAddrV4 where U: TryFrom<T>,

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