[][src]Struct runtime::net::TcpStream

pub struct TcpStream { /* fields omitted */ }

A TCP stream between a local and a remote socket.

A TcpStream can either be created by connecting to an endpoint, via the connect method, or by accepting a connection from a listener. It can be read or written to using the AsyncRead, AsyncWrite, and related extension traits in futures::io.

The connection will be closed when the value is dropped. The reading and writing portions of the connection can also be shut down individually with the shutdown method.

Examples

#![feature(async_await)]

use futures::prelude::*;
use runtime::net::TcpStream;

#[runtime::main]
async fn main() -> Result<(), failure::Error> {
    let mut stream = TcpStream::connect("127.0.0.1:8080").await?;
    println!("Connected to {}", &stream.peer_addr()?);

    let msg = "hello world";
    println!("<- {}", msg);
    stream.write_all(msg.as_bytes()).await?;

    let mut buf = vec![0u8; 1024];
    stream.read(&mut buf).await?;
    println!("-> {}\n", std::str::from_utf8(&mut buf)?);

    Ok(())
}

Methods

impl TcpStream[src]

Important traits for Connect
pub fn connect<A: ToSocketAddrs>(addr: A) -> Connect[src]

Create a new TCP stream connected to the specified address.

This function will create a new TCP socket and attempt to connect it to the addr provided. The returned future will be resolved once the stream has successfully connected, or it will return an error if one occurs.

Examples

#![feature(async_await)]
use runtime::net::TcpStream;

let stream = TcpStream::connect("127.0.0.1:0").await?;

pub fn local_addr(&self) -> Result<SocketAddr>[src]

Returns the local address that this stream is connected to.

Examples

#![feature(async_await)]
use runtime::net::TcpStream;
use std::net::{IpAddr, Ipv4Addr};

let stream = TcpStream::connect("127.0.0.1:8080").await?;

let expected = IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1));
assert_eq!(stream.local_addr()?.ip(), expected);

pub fn peer_addr(&self) -> Result<SocketAddr>[src]

Returns the remote address that this stream is connected to.

Examples

#![feature(async_await)]
use runtime::net::TcpStream;
use std::net::{IpAddr, Ipv4Addr};

let stream = TcpStream::connect("127.0.0.1:8080").await?;

let expected = IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1));
assert_eq!(stream.peer_addr()?.ip(), expected);

pub fn shutdown(&self, how: Shutdown) -> Result<()>[src]

Shuts down the read, write, or both halves of this connection.

This function will cause all pending and future I/O on the specified portions to return immediately with an appropriate value (see the documentation of Shutdown).

Examples

#![feature(async_await)]

use std::net::Shutdown;
use runtime::net::TcpStream;

let stream = TcpStream::connect("127.0.0.1:8080").await?;
stream.shutdown(Shutdown::Both)?;

Trait Implementations

impl Debug for TcpStream[src]

impl AsRawFd for TcpStream[src]

impl AsyncWrite for TcpStream[src]

impl AsyncRead for TcpStream[src]

unsafe fn initializer(&self) -> Initializer[src]

Determines if this AsyncReader can work with buffers of uninitialized memory. Read more

Auto Trait Implementations

impl Send for TcpStream

impl !Sync for TcpStream

Blanket Implementations

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<W> AsyncWriteExt for W where
    W: AsyncWrite + ?Sized
[src]

fn flush(&mut self) -> Flush<Self> where
    Self: Unpin
[src]

Creates a future which will entirely flush this AsyncWrite. Read more

fn close(&mut self) -> Close<Self> where
    Self: Unpin
[src]

Creates a future which will entirely close this AsyncWrite.

fn write_all(&'a mut self, buf: &'a [u8]) -> WriteAll<'a, Self> where
    Self: Unpin
[src]

Write data into this object. Read more

impl<R> AsyncReadExt for R where
    R: AsyncRead + ?Sized
[src]

fn copy_into<W>(&'a mut self, writer: &'a mut W) -> CopyInto<'a, Self, W> where
    Self: Unpin,
    W: AsyncWrite + Unpin
[src]

Creates a future which copies all the bytes from one object to another. Read more

fn read(&'a mut self, buf: &'a mut [u8]) -> Read<'a, Self> where
    Self: Unpin
[src]

Tries to read some bytes directly into the given buf in asynchronous manner, returning a future type. Read more

fn read_exact(&'a mut self, buf: &'a mut [u8]) -> ReadExact<'a, Self> where
    Self: Unpin
[src]

Creates a future which will read exactly enough bytes to fill buf, returning an error if end of file (EOF) is hit sooner. Read more

fn read_to_end(&'a mut self, buf: &'a mut Vec<u8>) -> ReadToEnd<'a, Self> where
    Self: Unpin
[src]

Creates a future which will read all the bytes from this AsyncRead. Read more

fn split(self) -> (ReadHalf<Self>, WriteHalf<Self>) where
    Self: AsyncWrite
[src]

Helper method for splitting this read/write object into two halves. Read more

impl<T> Erased for T