Class PeerAddress


  • public class PeerAddress
    extends java.lang.Object
    A PeerAddress holds an IP address and port number representing the network location of a peer in the Bitcoin P2P network. It exists primarily for serialization purposes.

    Instances of this class are not safe for use by multiple threads.

    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      boolean equals​(java.lang.Object o)  
      java.net.InetAddress getAddr()  
      static java.net.InetAddress getByAddress​(byte[] addrBytes)  
      java.lang.String getHostname()  
      int getMessageSize​(int protocolVariant)
      Return the size of the serialized message, using a given protocol variant.
      int getPort()  
      Services getServices()  
      java.net.InetSocketAddress getSocketAddress()  
      long getTime()
      Deprecated.
      use time()
      int hashCode()  
      static PeerAddress inet​(java.net.InetAddress addr, int port, Services services, java.time.Instant time)
      Constructs a peer address from the given IP address, port, services and time.
      static PeerAddress inet​(java.net.InetSocketAddress addr, Services services, java.time.Instant time)
      Constructs a peer address from the given IP address, port, services and time.
      static PeerAddress localhost​(NetworkParameters params)  
      static byte[] mapIntoIPv6​(byte[] ip)
      Map given IPv4 address into IPv6 space.
      static PeerAddress read​(java.nio.ByteBuffer payload, int protocolVariant)
      Deserialize this peer address from a given payload, using a given protocol variant.
      byte[] serialize​(int protocolVariant)
      Allocates a byte array and writes this peer address into it, using a given protocol variant.
      static PeerAddress simple​(java.net.InetAddress addr, int port)
      Constructs a simple peer address from the given IP address and port, but without services.
      static PeerAddress simple​(java.net.InetSocketAddress addr)
      Constructs a simple peer address from the given socket address, but without services.
      java.time.Instant time()
      Gets the time that the node was last seen as connected to the network.
      java.net.InetSocketAddress toSocketAddress()  
      java.lang.String toString()  
      java.nio.ByteBuffer write​(java.nio.ByteBuffer buf, int protocolVariant)
      Write this peer address into the given buffer, using a given protocol variant.
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    • Method Detail

      • simple

        public static PeerAddress simple​(java.net.InetAddress addr,
                                         int port)
        Constructs a simple peer address from the given IP address and port, but without services. The time is set to current time.
        Parameters:
        addr - ip address of peer
        port - port the peer is listening on
        Returns:
        simple peer address
      • simple

        public static PeerAddress simple​(java.net.InetSocketAddress addr)
        Constructs a simple peer address from the given socket address, but without services. The time is set to current time.
        Parameters:
        addr - ip address and port of peer
        Returns:
        simple peer address
      • inet

        public static PeerAddress inet​(java.net.InetAddress addr,
                                       int port,
                                       Services services,
                                       java.time.Instant time)
        Constructs a peer address from the given IP address, port, services and time. Such addresses are used for `addr` and `addrv2` messages of types IPv4 and IPv6.
        Parameters:
        addr - ip address of the peer
        port - port the peer is listening on
        services - node services the peer is providing
        time - last-seen time of the peer
      • inet

        public static PeerAddress inet​(java.net.InetSocketAddress addr,
                                       Services services,
                                       java.time.Instant time)
        Constructs a peer address from the given IP address, port, services and time. Such addresses are used for `addr` and `addrv2` messages of types IPv4 and IPv6.
        Parameters:
        addr - ip address and port of the peer
        services - node services the peer is providing
        time - last-seen time of the peer
      • read

        public static PeerAddress read​(java.nio.ByteBuffer payload,
                                       int protocolVariant)
                                throws java.nio.BufferUnderflowException,
                                       ProtocolException
        Deserialize this peer address from a given payload, using a given protocol variant. The variant can be 1 (AddressV1Message) or 2 (AddressV2Message).
        Parameters:
        payload - payload to deserialize from
        protocolVariant - variant of protocol to use for parsing
        Returns:
        read message
        Throws:
        java.nio.BufferUnderflowException - if the read message extends beyond the remaining bytes of the payload
        ProtocolException
      • write

        public java.nio.ByteBuffer write​(java.nio.ByteBuffer buf,
                                         int protocolVariant)
                                  throws java.nio.BufferOverflowException
        Write this peer address into the given buffer, using a given protocol variant. The variant can be 1 (AddressV1Message) or 2 (AddressV2Message)..
        Parameters:
        buf - buffer to write into
        protocolVariant - variant of protocol used
        Returns:
        the buffer
        Throws:
        java.nio.BufferOverflowException - if the peer addressdoesn't fit the remaining buffer
      • serialize

        public byte[] serialize​(int protocolVariant)
        Allocates a byte array and writes this peer address into it, using a given protocol variant. The variant can be 1 (AddressV1Message) or 2 (AddressV2Message).
        Parameters:
        protocolVariant - variant of protocol used
        Returns:
        byte array containing the peer address
      • getMessageSize

        public int getMessageSize​(int protocolVariant)
        Return the size of the serialized message, using a given protocol variant. The variant can be 1 (AddressV1Message) or 2 (AddressV2Message).. Note that if the message was deserialized from a payload, this size can differ from the size of the original payload.
        Parameters:
        protocolVariant - variant of protocol used
        Returns:
        size of the serialized message in bytes
      • getByAddress

        public static java.net.InetAddress getByAddress​(byte[] addrBytes)
      • mapIntoIPv6

        public static byte[] mapIntoIPv6​(byte[] ip)
        Map given IPv4 address into IPv6 space.
        Parameters:
        ip - IPv4 to map into IPv6 space
        Returns:
        mapped IP
      • getHostname

        public java.lang.String getHostname()
      • getAddr

        public java.net.InetAddress getAddr()
      • getSocketAddress

        public java.net.InetSocketAddress getSocketAddress()
      • getPort

        public int getPort()
      • getServices

        public Services getServices()
      • time

        public java.time.Instant time()
        Gets the time that the node was last seen as connected to the network.
        Returns:
        time that the node was last seen
      • getTime

        @Deprecated
        public long getTime()
        Deprecated.
        use time()
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • equals

        public boolean equals​(java.lang.Object o)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • toSocketAddress

        public java.net.InetSocketAddress toSocketAddress()