Skip to content
Branch: master
Find file Copy path
Find file Copy path
1 contributor

Users who have contributed to this file

59 lines (51 sloc) 1.82 KB
//! Hello world server.
//! A simple client that opens a TCP stream, writes "hello world\n", and closes
//! the connection.
//! You can test this out by running:
//! ncat -l 6142
//! And then in another terminal run:
//! cargo run --example hello_world
extern crate tokio;
use tokio::io;
use tokio::net::TcpStream;
use tokio::prelude::*;
pub fn main() -> Result<(), Box<std::error::Error>> {
let addr = "".parse()?;
// Open a TCP stream to the socket address.
// Note that this is the Tokio TcpStream, which is fully async.
let client = TcpStream::connect(&addr)
.and_then(|stream| {
println!("created stream");
io::write_all(stream, "hello world\n").then(|result| {
println!("wrote to stream; success={:?}", result.is_ok());
.map_err(|err| {
// All tasks must have an `Error` type of `()`. This forces error
// handling and helps avoid silencing failures.
// In our example, we are only going to log the error to STDOUT.
println!("connection error = {:?}", err);
// Start the Tokio runtime.
// The Tokio is a pre-configured "out of the box" runtime for building
// asynchronous applications. It includes both a reactor and a task
// scheduler. This means applications are multithreaded by default.
// This function blocks until the runtime reaches an idle state. Idle is
// defined as all spawned tasks have completed and all I/O resources (TCP
// sockets in our case) have been dropped.
println!("About to create the stream and write to it...");
println!("Stream has been created and written to.");
You can’t perform that action at this time.