streaming/)Implementation of I2P’s streaming protocol, providing TCP-like reliable, ordered, bidirectional connections over I2P’s unreliable garlic messages.
The streaming library abstracts I2P’s message-based transport into familiar socket semantics:
I2PSocket via I2PSocketManagerUnlike TCP’s cumulative ACKs, I2P uses selective ACKs per-packet:
| Class | Purpose |
|---|---|
Connection |
Per-stream state (seq, window, RTT) |
ConnectionManager |
All connections to a destination |
PacketHandler |
Fragment/reassemble, encrypt/decrypt |
MessageHandler |
garlic message encoding |
See ministreaming/ for the client API (I2PSocket, I2PServerSocket).
net.i2p.client.streaming.impl - Connection, ConnectionManager, PacketHandler, schedulers# Gradle
./gradlew :apps:streaming:jar
# Ant (from repo root)
ant buildStreaming