API, interfaces, and factory for a TCP-like (reliable, authenticated, in order) set of sockets for communicating over the IP-like (unreliable, unauthenticated, unordered) I2P messages. Note that this class is split across two jars, streaming.jar and ministreaming.jar. The interfaces are in ministreaming.jar, but the real work gets done in streaming.jar. Clients must have both jars in their classpath. Most clients will require (only) streaming.jar, ministreaming.jar, and i2p.jar in their classpath to communicate with the router.
When an application wants to use streams, it must fetch an
I2PSocketManager from the
I2PSocketManagerFactory, which in turn builds its own
I2PSession internally. All communication over that
I2PSession is handled by the
I2PSocketManager, as it imposes its own formatting on
the raw messages sent and received. If an application wants to receive streams
from other clients on the network, it should access the blocking
I2PServerSocket.accept() method, which will provide an
I2PSocket when a new one is available. If an
application wants to create a new stream to a peer, it should do so with the
I2PSocketManager.connect(net.i2p.data.Destination, net.i2p.client.streaming.I2PSocketOptions) call.
This package also contains the I2PSocketEepGet utility, which is an HTTP client that uses an existing I2PSocketManager.
There is a simple pair of demo applications available in the test directory - net.i2p.client.streaming.StreamSinkServer listens to a destination and dumps the data from all sockets it accepts to individual files, while net.i2p.client.streaming.StreamSinkClient connects to a particular destination and sends a specific amount of random data then disconnects.
Interface Summary Interface Description I2PServerSocketStreaming server socket returned by
I2PSocketStreaming socket returned by
I2PSocket.SocketErrorListenerDeprecated, unimplemented, does nothing. I2PSocketManagerCentralize the coordination and multiplexing of the local client's streaming. I2PSocketManager.DisconnectListener I2PSocketOptionsDefine the configuration for streaming and verifying data on the socket. IncomingConnectionFilterSomething that filters incoming streaming connections. StatefulConnectionFilterA ConnectionFilter that may hold state, can be started and stopped
Class Summary Class Description AcceptingChannelAs this does not (yet) extend ServerSocketChannel it cannot be returned by StandardServerSocket.getChannel(), until we implement an I2P SocketAddress class. I2PSocketAddressA SocketAddress (Destination + port) so we can have SocketChannels. I2PSocketEepGetFetch a URL using a socket from the supplied I2PSocketManager. I2PSocketManagerFactorySimplify the creation of I2PSession and transient I2P Destination objects if necessary to create a socket manager. I2PSocketManagerFull Deprecated.
Exception Summary Exception Description I2PSocketExceptionAn I2P-specific IOException thrown from input and output streams, with a stored status code to be used for programmatic responses. RouterRestartExceptionAn I2PException thrown from I2PServerSocket.accept() when the router is restarting.