Lightweight adaptive transport demo that switches between UDP and TCP based on runtime telemetry (RTT, loss, jitter) and application-level chunk sequencing. Designed as an example project for experimenting with network-aware transport switching and predictive components.
- Adaptive transport manager that switches between protocols based on telemetry thresholds.
- Simple client/server CLI and a GUI client.
- Application-layer chunking and sequencing for reliable delivery over UDP.
- Predictive component for making switching decisions or aiding retransmission strategies.
- .gitignore
- go.mod
- bin/
- cmd/client/main.go
- cmd/client_gui/main.go
- cmd/server/main.go
- config/client.json
- config/server.json
- internal/application/chunk.go
- internal/application/chunker.go
- internal/application/sequencer.go
- internal/config/config.go
- internal/predictive/predictor.go
- internal/transport/manager.go
- internal/transport/monitor.go
- internal/transport/tcp.go
- internal/transport/telemetry.go
- internal/transport/udp.go
- received_files/
Key symbols
transport.Protocoltransport.Managertransport.NewManagertransport.EvaluateSwitch(method)transport.NewTelemetrytransport.NewUDPProtocoltransport.NewTCPProtocol
- Build the server and client:
go build ./cmd/server
go build ./cmd/client
# optional: gui client
go build ./cmd/client_gui