tokio udt
v0.1.0-alpha.8
Uma implementação do protocolo de transferência de dados (UDT) baseado em UDP baseado nas primitivas Tokio.
UDT é um protocolo de transporte de dados de alto desempenho. Ele foi projetado especificamente para aplicações com uso intensivo de dados em redes de longa distância de alta velocidade, para superar os problemas de eficiência e justiça do TCP. Como o próprio nome indica, o UDT é construído sobre o UDP e fornece streaming de dados confiável e serviços de mensagens.
Para saber mais sobre UDT, consulte https://udt.sourceforge.io/
Você também pode encontrar a implementação de referência do C++ em https://github.com/eminence/udt
use std :: net :: Ipv4Addr ;
use tokio :: io :: { AsyncReadExt , Result } ;
use tokio_udt :: UdtListener ;
# [ tokio :: main ]
async fn main ( ) -> Result < ( ) > {
let port = 9000 ;
let listener = UdtListener :: bind ( ( Ipv4Addr :: UNSPECIFIED , port ) . into ( ) , None ) . await ? ;
println ! ( "Waiting for connections..." ) ;
loop {
let ( addr , mut connection ) = listener . accept ( ) . await ? ;
println ! ( "Accepted connection from {}" , addr ) ;
let mut buffer = Vec :: with_capacity ( 1_000_000 ) ;
tokio :: task :: spawn ( {
async move {
loop {
match connection . read_buf ( & mut buffer ) . await {
Ok ( _size ) => { }
Err ( e ) => {
eprintln ! ( "Connnection with {} failed: {}" , addr , e ) ;
break ;
}
}
}
}
} ) ;
}
}
use std :: net :: Ipv4Addr ;
use tokio :: io :: { AsyncWriteExt , Result } ;
use tokio_udt :: UdtConnection ;
# [ tokio :: main ]
async fn main ( ) -> Result < ( ) > {
let port = 9000 ;
let mut connection = UdtConnection :: connect ( ( Ipv4Addr :: LOCALHOST , port ) , None ) . await ? ;
loop {
connection . write_all ( b"Hello World!" ) . await ? ;
}
}