## Uses of Interface
net.i2p.client.streaming.I2PSocket

- Packages that use I2PSocket
  Package | Description
  --- | ---
  net.i2p.BOB | BOB, the Basic Open Bridge, allows TCP applications to talk over I2P.
  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.i2ptunnel |
  net.i2p.i2ptunnel.socks |
  net.i2p.sam |
  org.klomp.snark |

- - ### Uses of I2PSocket in net.i2p.BOB

    Constructors in net.i2p.BOB with parameters of type I2PSocket
    Constructor and Description
    `I2PtoTCP(I2PSocket I2Psock, NamedDB info, NamedDB database, AtomicBoolean lives)` Constructor

  - ### Uses of I2PSocket in net.i2p.client.streaming

    Classes in net.i2p.client.streaming that implement I2PSocket
    Modifier and Type | Class and Description
    --- | ---
    `(package private) class` | `I2PSocketFull` Bridge between the full streaming lib and the I2PSocket API
    `(package private) class` | `I2PSocketImpl` Deprecated. use I2PSocketFull

    Methods in net.i2p.client.streaming that return I2PSocket
    Modifier and Type | Method and Description
    --- | ---
    `I2PSocket` | I2PServerSocketFull.`accept()` Warning, unlike regular ServerSocket, may return null
    `I2PSocket` | I2PServerSocket.`accept()` Waits for the next socket connecting.
    `I2PSocket` | I2PServerSocketImpl.`accept()` Deprecated. Waits for the next socket connecting.
    `I2PSocket` | I2PSocketManagerFull.`connect(Destination peer)` Create a new connected socket.
    `I2PSocket` | I2PSocketManager.`connect(Destination peer)` Create a new connected socket (block until the socket is created)
    `I2PSocket` | I2PSocketManagerImpl.`connect(Destination peer)` Deprecated. Create a new connected socket (block until the socket is created)
    `I2PSocket` | I2PSocketManagerFull.`connect(Destination peer, I2PSocketOptions options)` Create a new connected socket.
    `I2PSocket` | I2PSocketManager.`connect(Destination peer, I2PSocketOptions options)` Create a new connected socket (block until the socket is created)
    `I2PSocket` | I2PSocketManagerImpl.`connect(Destination peer, I2PSocketOptions options)` Deprecated. Create a new connected socket (block until the socket is created)
    `I2PSocket` | I2PSocketManagerFull.`receiveSocket()`

    Methods in net.i2p.client.streaming that return types with arguments of type I2PSocket
    Modifier and Type | Method and Description
    --- | ---
    `Set<I2PSocket>` | I2PSocketManagerFull.`listSockets()` Retrieve a set of currently connected I2PSockets, either initiated locally or remotely.
    `Set<I2PSocket>` | I2PSocketManager.`listSockets()` Retrieve a set of currently connected I2PSockets, either initiated locally or remotely.
    `Set<I2PSocket>` | I2PSocketManagerImpl.`listSockets()` Deprecated. Retrieve a set of currently connected I2PSockets, either initiated locally or remotely.

    Methods in net.i2p.client.streaming with parameters of type I2PSocket
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | I2PServerSocketImpl.`addWaitForAccept(I2PSocket s, long timeoutMs)` Deprecated. Make the socket available and wait until the client app accepts it, or until the given timeout elapses.

    Constructors in net.i2p.client.streaming with parameters of type I2PSocket
    Constructor and Description
    `StandardSocket(I2PSocket socket)`

  - ### Uses of I2PSocket in net.i2p.i2ptunnel

    Methods in net.i2p.i2ptunnel that return I2PSocket
    Modifier and Type | Method and Description
    --- | ---
    `I2PSocket` | I2PTunnelClientBase.`createI2PSocket(Destination dest)` Create a new I2PSocket towards to the specified destination, adding it to the list of connections actually managed by this tunnel.
    `I2PSocket` | I2PTunnelClientBase.`createI2PSocket(Destination dest, I2PSocketOptions opt)` Create a new I2PSocket towards to the specified destination, adding it to the list of connections actually managed by this tunnel.

    Methods in net.i2p.i2ptunnel with parameters of type I2PSocket
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | I2PTunnelServer.`blockingHandle(I2PSocket socket)`
    `protected void` | I2PTunnelIRCServer.`blockingHandle(I2PSocket socket)`
    `protected void` | I2PTunnelHTTPServer.`blockingHandle(I2PSocket socket)` Called by the thread pool of I2PSocket handlers
    `protected void` | I2PTunnelRunner.`close(OutputStream out, InputStream in, OutputStream i2pout, InputStream i2pin, Socket s, I2PSocket i2ps, Thread t1, Thread t2)`
    `protected void` | I2PTunnelHTTPClientRunner.`close(OutputStream out, InputStream in, OutputStream i2pout, InputStream i2pin, Socket s, I2PSocket i2ps, Thread t1, Thread t2)`

    Constructors in net.i2p.i2ptunnel with parameters of type I2PSocket
    Constructor and Description
    `I2PTunnelHTTPClientRunner(Socket s, I2PSocket i2ps, Object slock, byte[] initialI2PData, List sockList, Runnable onTimeout)`
    `I2PTunnelIRCClient.IrcInboundFilter(Socket _local, I2PSocket _remote, StringBuffer pong, Log log)`
    `I2PTunnelIRCClient.IrcOutboundFilter(Socket _local, I2PSocket _remote, StringBuffer pong, Log log)`
    `I2PTunnelRunner(Socket s, I2PSocket i2ps, Object slock, byte[] initialI2PData, byte[] initialSocketData, List sockList)`
    `I2PTunnelRunner(Socket s, I2PSocket i2ps, Object slock, byte[] initialI2PData, byte[] initialSocketData, List sockList, Runnable onTimeout)`
    `I2PTunnelRunner(Socket s, I2PSocket i2ps, Object slock, byte[] initialI2PData, List sockList)`
    `I2PTunnelRunner(Socket s, I2PSocket i2ps, Object slock, byte[] initialI2PData, List sockList, Runnable onTimeout)`

  - ### Uses of I2PSocket in net.i2p.i2ptunnel.socks

    Methods in net.i2p.i2ptunnel.socks that return I2PSocket
    Modifier and Type | Method and Description
    --- | ---
    `I2PSocket` | SOCKS4aServer.`getDestinationI2PSocket(I2PSOCKSTunnel t)` Get an I2PSocket that can be used to send/receive 8-bit clean data to/from the destination of the SOCKS connection.
    `abstract I2PSocket` | SOCKSServer.`getDestinationI2PSocket(I2PSOCKSTunnel t)` Get an I2PSocket that can be used to send/receive 8-bit clean data to/from the destination of the SOCKS connection.
    `I2PSocket` | SOCKS5Server.`getDestinationI2PSocket(I2PSOCKSTunnel t)` Get an I2PSocket that can be used to send/receive 8-bit clean data to/from the destination of the SOCKS connection.

  - ### Uses of I2PSocket in net.i2p.sam

    Fields in net.i2p.sam declared as I2PSocket
    Modifier and Type | Field and Description
    --- | ---
    `protected I2PSocket` | SAMStreamSession.SAMStreamSessionSocketReader.`i2pSocket`

    Methods in net.i2p.sam with parameters of type I2PSocket
    Modifier and Type | Method and Description
    --- | ---
    `protected int` | SAMStreamSession.`createSocketHandler(I2PSocket s, int id)` Create a new SAM STREAM session socket handler, detaching its thread.
    `protected SAMStreamSession.SAMStreamSessionSocketReader` | SAMStreamSession.`newSAMStreamSessionSocketReader(I2PSocket s, int id)`
    `protected SAMStreamSession.SAMStreamSessionSocketReader` | SAMv2StreamSession.`newSAMStreamSessionSocketReader(I2PSocket s, int id)`
    `protected SAMStreamSession.StreamSender` | SAMStreamSession.`newStreamSender(I2PSocket s, int id)`
    `protected SAMStreamSession.StreamSender` | SAMv2StreamSession.`newStreamSender(I2PSocket s, int id)` Lets us push data through the stream without blocking, (even after exceeding the I2PSocket's buffer)

    Constructors in net.i2p.sam with parameters of type I2PSocket
    Constructor and Description
    `SAMStreamSession.SAMStreamSessionSocketReader(I2PSocket s, int id)` Create a new SAM STREAM session socket reader
    `SAMStreamSession.SAMv1StreamSessionSocketReader(I2PSocket s, int id)` Create a new SAM STREAM session socket reader
    `SAMStreamSession.StreamSender(I2PSocket s, int id)`
    `SAMStreamSession.v1StreamSender(I2PSocket s, int id)`
    `SAMv2StreamSession.SAMv2StreamSessionSocketReader(I2PSocket s, int id)` Create a new SAM STREAM session socket reader
    `SAMv2StreamSession.v2StreamSender(I2PSocket s, int id)`

  - ### Uses of I2PSocket in org.klomp.snark

    Methods in org.klomp.snark that return I2PSocket
    Modifier and Type | Method and Description
    --- | ---
    `(package private) I2PSocket` | I2PSnarkUtil.`connect(PeerID peer)` connect to the given destination

    Methods in org.klomp.snark with parameters of type I2PSocket
    Modifier and Type | Method and Description
    --- | ---
    `void` | PeerAcceptor.`connection(I2PSocket socket, InputStream in, OutputStream out)`

    Constructors in org.klomp.snark with parameters of type I2PSocket
    Constructor and Description
    `Peer(I2PSocket sock, InputStream in, OutputStream out, byte[] my_id, byte[] infohash, MetaInfo metainfo)` Incoming connection.