Files
tokio/tokio/examples
David Kellum c9532e49d7 v0.1.x lint fix, MSRV 1.28.0 updates (#1451)
* use dyn Trait syntax where appropriate

recent rust nightly started warning that not using `dyn` was
deprecated. This requires MSRV 1.27.0+.

* rustfmt fallout from dyn additions

* stop explicit allow of rust_2018_idioms

* more dyn Trait syntax

* drop tokio-macros from 0.1.x workspace

Since tokio-macros specifies an edition=2018, we would otherwise
require MSRV 1.31.0 to build/test it. And tokio-macros isn't used with
tokio 0.1.x.

* reactor: narrow tokio-io-pool dev dep to 0.1.4

Since 0.1.5-6 is now a edition=2018 crate, which has effective MSRV
1.31.0.

* narrow tempfile dev-dep to avoid MSRV bump

tempfile 3.1.0 pulls in rand 0.7.0 and is MSRV 1.32.0

* narrow flate2 dev-dep to avoid MSRV bump

flate2 1.0.10-11 have MSRV 1.34.0.

github refs: alexcrichton/flate2-rs#207

* fs: drop deprecated tempdir crate use in tests

In particular because it pulls in old rand duplicates. Replace use
with tempfile::tempdir() which has been available since tempfile
3.0.0.

backport-of: #1312

* increase CI MSRV to 1.28.0
2019-08-15 18:28:56 -04:00
..

Examples of how to use Tokio

This directory contains a number of examples showcasing various capabilities of the tokio crate.

All examples can be executed with:

cargo run --example $name

A high level description of each example is:

  • hello_world - a tiny server that writes "hello world" to all connected clients and then terminates the connection, should help see how to create and initialize tokio.

  • echo - this is your standard TCP "echo server" which accepts connections and then echos back any contents that are read from each connected client.

  • print_each_packet - this server will create a TCP listener, accept connections in a loop, and put down in the stdout everything that's read off of each TCP connection.

  • echo-udp - again your standard "echo server", except for UDP instead of TCP. This will echo back any packets received to the original sender.

  • connect - this is a nc-like clone which can be used to interact with most other examples. The program creates a TCP connection or UDP socket and sends all information read on stdin to the remote peer, displaying any data received on stdout. Often quite useful when interacting with the various other servers here!

  • chat - this spins up a local TCP server which will broadcast from any connected client to all other connected clients. You can connect to this in multiple terminals and use it to chat between the terminals.

  • chat-combinator - Similar to chat, but this uses a much more functional programming approach using combinators.

  • proxy - an example proxy server that will forward all connected TCP clients to the remote address specified when starting the program.

  • tinyhttp - a tiny HTTP/1.1 server which doesn't support HTTP request bodies showcasing running on multiple cores, working with futures and spawning tasks, and finally framing a TCP connection to discrete request/response objects.

  • tinydb - an in-memory database which shows sharing state between all connected clients, notably the key/value store of this database.

  • udp-client - a simple send_dgram/recv_dgram example.

  • manual-runtime - manually composing a runtime.

  • blocking - perform heavy computation in blocking environment.

If you've got an example you'd like to see here, please feel free to open an issue. Otherwise if you've got an example you'd like to add, please feel free to make a PR!