Type Alias jormungandr::network::p2p::Address

source ·
pub type Address = SocketAddr;
Expand description

At the logical level, every peer is identified by its public key, and this is the only info exposed in the external interface. However, keeping the remote address of the peer is needed for some features, namely debugging and server side authentication of requests. In addition, keep in mind the address here is not always the public address included in the gossip, as it may be an ephemeral address used by a connected client.

Aliased Type§

enum Address {
    V4(SocketAddrV4),
    V6(SocketAddrV6),
}

Variants§

§1.0.0

V4(SocketAddrV4)

An IPv4 socket address.

§1.0.0

V6(SocketAddrV6)

An IPv6 socket address.

Implementations§

source§

impl SocketAddr

source

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

🔬This is a nightly-only experimental API. (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

1.7.0 (const: 1.69.0) · source

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) · source

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 · source

pub 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) · source

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 · source

pub 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) · source

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) · source

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§

§

impl Arbitrary for SocketAddr

§

fn arbitrary<G>(g: &mut G) -> SocketAddrwhere G: Gen,

§

fn shrink(&self) -> Box<dyn Iterator<Item = Self>, Global>

§

impl Arbitrary for SocketAddr

§

type Parameters = ()

The type of parameters that arbitrary_with accepts for configuration of the generated Strategy. Parameters must implement Default.
§

type Strategy = TupleUnion<((u32, Arc<MapInto<<SocketAddrV4 as Arbitrary>::Strategy, SocketAddr>, Global>), (u32, Arc<MapInto<<SocketAddrV6 as Arbitrary>::Strategy, SocketAddr>, Global>))>

The type of Strategy used to generate values of type Self.
§

fn arbitrary_with( _args: <SocketAddr as Arbitrary>::Parameters ) -> <SocketAddr as Arbitrary>::Strategy

Generates a Strategy for producing arbitrary values of type the implementing type (Self). The strategy is passed the arguments given in args. Read more
§

fn arbitrary() -> Self::Strategy

Generates a Strategy for producing arbitrary values of type the implementing type (Self). Read more
1.0.0 · source§

impl Clone for SocketAddr

source§

fn clone(&self) -> SocketAddr

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
§

impl Connected<&AddrStream> for SocketAddr

§

fn connect_info(target: &AddrStream) -> SocketAddr

Create type holding information about the connection.
1.0.0 · source§

impl Debug for SocketAddr

source§

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

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for SocketAddr

source§

fn deserialize<D>( deserializer: D ) -> Result<SocketAddr, <D as Deserializer<'de>>::Error>where D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
1.0.0 · source§

impl Display for SocketAddr

source§

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

Formats the value using the given formatter. Read more
1.17.0 · source§

impl<I> From<(I, u16)> for SocketAddrwhere I: Into<IpAddr>,

source§

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 · source§

impl From<SocketAddrV4> for SocketAddr

1.16.0 · source§

impl From<SocketAddrV6> for SocketAddr

1.0.0 · source§

impl FromStr for SocketAddr

§

type Err = AddrParseError

The associated error which can be returned from parsing.
source§

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

Parses a string s to return a value of this type. Read more
1.0.0 · source§

impl Hash for SocketAddr

source§

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

Feeds this value into the given Hasher. Read more
1.3.0 · source§

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

Feeds a slice of this type into the given Hasher. Read more
1.0.0 · source§

impl Ord for SocketAddr

source§

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

This method returns an Ordering between self and other. Read more
1.21.0 · source§

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

Compares and returns the maximum of two values. Read more
1.21.0 · source§

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

Compares and returns the minimum of two values. Read more
1.50.0 · source§

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

Restrict a value to a certain interval. Read more
1.0.0 · source§

impl PartialEq<SocketAddr> for SocketAddr

source§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
1.0.0 · source§

impl PartialOrd<SocketAddr> for SocketAddr

source§

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

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Serialize for SocketAddr

source§

fn serialize<S>( &self, serializer: S ) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where S: Serializer,

Serialize this value into the given Serde serializer. Read more
1.0.0 · source§

impl ToSocketAddrs for SocketAddr

§

type Iter = IntoIter<SocketAddr>

Returned iterator over socket addresses which this type may correspond to.
source§

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

Converts this object to an iterator of resolved SocketAddrs. Read more
1.0.0 · source§

impl Copy for SocketAddr

1.0.0 · source§

impl Eq for SocketAddr

1.0.0 · source§

impl StructuralEq for SocketAddr

1.0.0 · source§

impl StructuralPartialEq for SocketAddr

§

impl ToSocketAddrs for SocketAddr