# Uses of Package
net.i2p.client

- Packages that use net.i2p.client
  Package | Description
  --- | ---
  net.i2p.BOB | BOB, the Basic Open Bridge, allows TCP applications to talk over I2P.
  net.i2p.client | Implements the base I2P SDK for developing applications that communicate through I2P.
  net.i2p.client.datagram | Provides a standard way for reading and writing messages transferred over I2P so that the recipient has an authenticated mechanism to reply to it.
  net.i2p.client.streaming | Implements a TCP-like (reliable, authenticated, in order) set of sockets for communicating over the IP-like (unreliable, unauthenticated, unordered) I2P messages.
  net.i2p.data | These classes define the common data structures used by the various I2P protocols.
  net.i2p.i2ptunnel |
  net.i2p.i2ptunnel.udp |
  net.i2p.internal | Interface and classes for a router and client within the same JVM to directly pass I2CP messages using Queues instead of serialized messages over socket streams.
  net.i2p.router.client |
  net.i2p.sam |

- Classes in net.i2p.client used by net.i2p.BOB
  Class and Description
  I2PSession Define the standard means of sending and receiving messages on the I2P network by using the I2CP (the client protocol).
  I2PSessionListener Define a means for the router to asynchronously notify the client that a new message is available or the router is under attack.

- Classes in net.i2p.client used by net.i2p.client
  Class and Description
  ClientWriterRunner Copied from net.i2p.router.client We need a single thread that writes so we don't have issues with the Piped Streams used in InternalSocket.
  HandlerImpl Base class for handling I2CP messages
  I2CPMessageHandler Define a way to handle a particular type of message
  I2CPMessageProducer Produce the various messages the session needs to send to the router.
  I2PClient Define the standard means of interacting with the I2P system
  I2PClientMessageHandlerMap Contains a map of message handlers that a session will want to use
  I2PSession Define the standard means of sending and receiving messages on the I2P network by using the I2CP (the client protocol).
  I2PSessionException Thrown when there is a problem doing something on the session
  I2PSessionImpl Implementation of an I2P session running over TCP.
  I2PSessionImpl.AvailabilityNotifier This notifies the client of payload messages.
  I2PSessionImpl2 Thread safe implementation of an I2P session running over TCP.
  I2PSessionListener Define a means for the router to asynchronously notify the client that a new message is available or the router is under attack.
  I2PSessionMuxedListener Define a means for the router to asynchronously notify the client that a new message is available or the router is under attack.

- Classes in net.i2p.client used by net.i2p.client.datagram
  Class and Description
  I2PSession Define the standard means of sending and receiving messages on the I2P network by using the I2CP (the client protocol).

- Classes in net.i2p.client used by net.i2p.client.streaming
  Class and Description
  I2PSession Define the standard means of sending and receiving messages on the I2P network by using the I2CP (the client protocol).
  I2PSessionListener Define a means for the router to asynchronously notify the client that a new message is available or the router is under attack.

- Classes in net.i2p.client used by net.i2p.data
  Class and Description
  I2PClient Define the standard means of interacting with the I2P system
  I2PSession Define the standard means of sending and receiving messages on the I2P network by using the I2CP (the client protocol).
  I2PSessionException Thrown when there is a problem doing something on the session

- Classes in net.i2p.client used by net.i2p.i2ptunnel
  Class and Description
  I2PSession Define the standard means of sending and receiving messages on the I2P network by using the I2CP (the client protocol).

- Classes in net.i2p.client used by net.i2p.i2ptunnel.udp
  Class and Description
  I2PSession Define the standard means of sending and receiving messages on the I2P network by using the I2CP (the client protocol).
  I2PSessionListener Define a means for the router to asynchronously notify the client that a new message is available or the router is under attack.

- Classes in net.i2p.client used by net.i2p.internal
  Class and Description
  I2PSessionException Thrown when there is a problem doing something on the session

- Classes in net.i2p.client used by net.i2p.router.client
  Class and Description
  I2PSessionException Thrown when there is a problem doing something on the session

- Classes in net.i2p.client used by net.i2p.sam
  Class and Description
  I2PSession Define the standard means of sending and receiving messages on the I2P network by using the I2CP (the client protocol).
  I2PSessionException Thrown when there is a problem doing something on the session
  I2PSessionListener Define a means for the router to asynchronously notify the client that a new message is available or the router is under attack.