[][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

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 ConnectFuture
pub fn connect<A: ToSocketAddrs>(addr: A) -> ConnectFuture[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

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

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

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

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

Blanket Implementations

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

impl<T> From<T> for 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> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<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(&'a mut self, buf: &'a [u8]) -> Write<'a, Self> where
    Self: Unpin
[src]

Creates a future which will write bytes from buf into the object. Read more

fn write_vectored(
    &'a mut self,
    bufs: &'a [IoSlice<'a>]
) -> WriteVectored<'a, Self> where
    Self: Unpin
[src]

Creates a future which will write bytes from bufs into the object using vectored IO operations. Read more

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

Write data into this object. Read more

fn into_sink<Item>(self) -> IntoSink<Self, Item> where
    Item: AsRef<[u8]>, 
[src]

Allow using an [AsyncWrite] as a Sink``<Item: AsRef<[u8]>>. Read more

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

fn copy_into<W>(self, writer: &mut W) -> CopyInto<Self, W> where
    W: AsyncWrite + Unpin + ?Sized
[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_vectored(
    &'a mut self,
    bufs: &'a mut [IoSliceMut<'a>]
) -> ReadVectored<'a, Self> where
    Self: Unpin
[src]

Creates a future which will read from the AsyncRead into bufs using vectored IO operations. 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 read_to_string(&'a mut self, buf: &'a mut String) -> ReadToString<'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