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

- Packages that use I2PSocket
  Package | Description
  --- | ---
  net.i2p.client.streaming | API, interfaces, and factory for a TCP-like (reliable, authenticated, in order) set of sockets for communicating over IP-like (unreliable, unauthenticated, unordered) I2P messages.
  net.i2p.client.streaming.impl | Implementation of a TCP-like (reliable, authenticated, in order) set of sockets for communicating over the IP-like (unreliable, unauthenticated, unordered) I2P messages.
  net.i2p.i2ptunnel | Implementation of preconfigured tunnels for both clients and servers, with a comprehensive UI for tunnel management and configuration.
  net.i2p.i2ptunnel.irc | IRC-specific tunnel enhancements including protocol filters and DCC (Direct Client-to-Client) connection handlers for IRC client tunnels.
  net.i2p.i2ptunnel.socks | SOCKS protocol tunnel implementation for I2P, supporting SOCKS 4, 4a, and 5.
  net.i2p.sam | The SAM (Simple Anonymous Messaging) client API.
  org.klomp.snark | I2P version of the snark bittorrent client, imported in 2005 and heavily enhanced to add a web UI, DHT support, and other features.

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

    Methods in net.i2p.client.streaming that return I2PSocket
    Modifier and Type | Method and Description
    --- | ---
    `I2PSocket` | I2PServerSocket.`accept()` Waits for the next socket connecting.
    `protected abstract I2PSocket` | AcceptingChannel.`accept()` Accept an incoming connection.
    `I2PSocket` | I2PSocketManager.`connect(Destination peer)` Create a new connected socket (block until the socket is created)
    `I2PSocket` | I2PSocketManager.`connect(Destination peer, I2PSocketOptions options)` Create a new connected socket (block until the socket is created)

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

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

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

    Methods in net.i2p.client.streaming.impl that return I2PSocket
    Modifier and Type | Method and Description
    --- | ---
    `I2PSocket` | I2PServerSocketFull.`accept()` Waits for the next socket connecting.
    `I2PSocket` | I2PSocketManagerFull.`connect(Destination peer)` Create a new connected socket.
    `I2PSocket` | I2PSocketManagerFull.`connect(Destination peer, I2PSocketOptions options)` Create a new connected socket.
    `I2PSocket` | I2PSocketManagerFull.`receiveSocket()` The accept() call.

    Methods in net.i2p.client.streaming.impl 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.

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

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

    Fields in net.i2p.i2ptunnel with type parameters of type I2PSocket
    Modifier and Type | Field and Description
    --- | ---
    `protected List<I2PSocket>` | I2PTunnelClientBase.`mySockets`

    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.
    `I2PSocket` | I2PTunnelClientBase.`createI2PSocket(Destination dest, int port)` 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)` This is run in a thread from a limited-size thread pool via Handler.run(), except for a standard server (this class, no extension, as determined in getUsePool()), it is run directly in the acceptor thread (see run()).
    `protected void` | I2PTunnelHTTPServer.`blockingHandle(I2PSocket socket)` Called by the thread pool of I2PSocket handlers
    `protected void` | I2PTunnelIRCServer.`blockingHandle(I2PSocket socket)`
    `protected void` | I2PTunnelRunner.`close(OutputStream out, InputStream in, OutputStream i2pout, InputStream i2pin, Socket s, I2PSocket i2ps, Thread t1, Thread t2)` Warning - overridden in I2PTunnelHTTPClientRunner.
    `protected void` | I2PTunnelHTTPClientRunner.`close(OutputStream out, InputStream in, OutputStream i2pout, InputStream i2pin, Socket s, I2PSocket i2ps, Thread t1, Thread t2)` Closes all streams and sockets, respecting keep-alive settings.
    `static Map<String,List<String>>` | I2PTunnelHTTPServer.`readHeaders(I2PSocket socket, InputStream in, StringBuilder command, Set<String> skipHeaders, I2PAppContext ctx, long initialTimeout)` From I2P to server: socket non-null, in null.
    `static Map<String,List<String>>` | I2PTunnelHTTPServer.`readHeaders(I2PSocket socket, InputStream in, StringBuilder command, String[] skipHeaders, I2PAppContext ctx, long initialTimeout)`

    Constructors in net.i2p.i2ptunnel with parameters of type I2PSocket
    Constructor and Description
    `I2PTunnelHTTPClientRunner(Socket s, I2PSocket i2ps, Object slock, byte[] initialI2PData, List<I2PSocket> sockList, I2PTunnelRunner.FailCallback onFail, boolean allowKeepAliveI2P, boolean allowKeepAliveSocket, boolean isHead)` Constructs a new HTTP client runner.
    `I2PTunnelRunner(Socket s, I2PSocket i2ps, Object slock, byte[] initialI2PData, byte[] initialSocketData, List<I2PSocket> sockList)` Deprecated. use FailCallback constructor
    `I2PTunnelRunner(Socket s, I2PSocket i2ps, Object slock, byte[] initialI2PData, byte[] initialSocketData, List<I2PSocket> sockList, I2PTunnelRunner.FailCallback onFail)` Recommended new constructor.
    `I2PTunnelRunner(Socket s, I2PSocket i2ps, Object slock, byte[] initialI2PData, byte[] initialSocketData, List<I2PSocket> sockList, I2PTunnelRunner.FailCallback onFail, boolean keepAliveI2P, boolean keepAliveSocket)` With keepAlive args.
    `I2PTunnelRunner(Socket s, I2PSocket i2ps, Object slock, byte[] initialI2PData, byte[] initialSocketData, List<I2PSocket> sockList, Runnable onTimeout)` Deprecated. use FailCallback constructor
    `I2PTunnelRunner(Socket s, I2PSocket i2ps, Object slock, byte[] initialI2PData, List<I2PSocket> sockList)` Deprecated. use FailCallback constructor
    `I2PTunnelRunner(Socket s, I2PSocket i2ps, Object slock, byte[] initialI2PData, List<I2PSocket> sockList, Runnable onTimeout)` Deprecated. use FailCallback constructor

    Constructor parameters in net.i2p.i2ptunnel with type arguments of type I2PSocket
    Constructor and Description
    `I2PTunnelHTTPClientRunner(Socket s, I2PSocket i2ps, Object slock, byte[] initialI2PData, List<I2PSocket> sockList, I2PTunnelRunner.FailCallback onFail, boolean allowKeepAliveI2P, boolean allowKeepAliveSocket, boolean isHead)` Constructs a new HTTP client runner.
    `I2PTunnelRunner(Socket s, I2PSocket i2ps, Object slock, byte[] initialI2PData, byte[] initialSocketData, List<I2PSocket> sockList)` Deprecated. use FailCallback constructor
    `I2PTunnelRunner(Socket s, I2PSocket i2ps, Object slock, byte[] initialI2PData, byte[] initialSocketData, List<I2PSocket> sockList, I2PTunnelRunner.FailCallback onFail)` Recommended new constructor.
    `I2PTunnelRunner(Socket s, I2PSocket i2ps, Object slock, byte[] initialI2PData, byte[] initialSocketData, List<I2PSocket> sockList, I2PTunnelRunner.FailCallback onFail, boolean keepAliveI2P, boolean keepAliveSocket)` With keepAlive args.
    `I2PTunnelRunner(Socket s, I2PSocket i2ps, Object slock, byte[] initialI2PData, byte[] initialSocketData, List<I2PSocket> sockList, Runnable onTimeout)` Deprecated. use FailCallback constructor
    `I2PTunnelRunner(Socket s, I2PSocket i2ps, Object slock, byte[] initialI2PData, List<I2PSocket> sockList)` Deprecated. use FailCallback constructor
    `I2PTunnelRunner(Socket s, I2PSocket i2ps, Object slock, byte[] initialI2PData, List<I2PSocket> sockList, Runnable onTimeout)` Deprecated. use FailCallback constructor

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

    Methods in net.i2p.i2ptunnel.irc with parameters of type I2PSocket
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | I2PTunnelDCCServer.`blockingHandle(I2PSocket socket)` An incoming DCC connection, only accept for a known port.

    Constructors in net.i2p.i2ptunnel.irc with parameters of type I2PSocket
    Constructor and Description
    `IrcInboundFilter(Socket lcl, I2PSocket rem, StringBuffer pong, Log log)`
    `IrcInboundFilter(Socket lcl, I2PSocket rem, StringBuffer pong, Log log, DCCHelper helper)`
    `IrcOutboundFilter(Socket lcl, I2PSocket rem, StringBuffer pong, Log log)`
    `IrcOutboundFilter(Socket lcl, I2PSocket rem, StringBuffer pong, Log log, DCCHelper helper)`

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

    Classes in net.i2p.i2ptunnel.socks that implement I2PSocket
    Modifier and Type | Class and Description
    --- | ---
    `(package private) class` | `SocketWrapper` Wrapper around the Socket obtained from the Outproxy, which is a wrapper around the Orchid Stream.

    Methods in net.i2p.i2ptunnel.socks that return I2PSocket
    Modifier and Type | Method and Description
    --- | ---
    `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.
    `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` | 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.

    Methods in net.i2p.i2ptunnel.socks with parameters of type I2PSocket
    Modifier and Type | Method and Description
    --- | ---
    `void` | SOCKS5Server.`httpsConnect(I2PSocket destSock, OutputStream pout, String connHostName, int connPort, String configUser, String configPW)` Act as a https client to connect to a CONNECT outproxy.

  - ### 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`
    `protected I2PSocket` | SAMStreamSession.StreamSender.`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` | SAMv2StreamSession.`newSAMStreamSessionSocketReader(I2PSocket s, int id)`
    `protected SAMStreamSession.SAMStreamSessionSocketReader` | SAMStreamSession.`newSAMStreamSessionSocketReader(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)
    `protected SAMStreamSession.StreamSender` | SAMStreamSession.`newStreamSender(I2PSocket s, int id)`
    `boolean` | SAMv3StreamSession.`queueSocket(I2PSocket sock)` Put a socket on the accept queue.

    Constructors in net.i2p.sam with parameters of type I2PSocket
    Constructor and Description
    `SAMStreamSessionSocketReader(I2PSocket s, int id)` Create a new SAM STREAM session socket reader
    `SAMv1StreamSessionSocketReader(I2PSocket s, int id)` Create a new SAM STREAM session socket reader
    `SAMv2StreamSessionSocketReader(I2PSocket s, int id)` Create a new SAM STREAM session socket reader
    `StreamSender(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.