tokio udt
v0.1.0-alpha.8
Una implementación del Protocolo de transferencia de datos (UDT) basado en UDP basado en primitivas de Tokio.
UDT es un protocolo de transporte de datos de alto rendimiento. Fue diseñado específicamente para aplicaciones intensivas en datos a través de redes de área amplia de alta velocidad, para superar los problemas de eficiencia y equidad de TCP. Como su nombre lo indica, UDT está construido sobre UDP y proporciona servicios confiables de transmisión de datos y mensajería.
Para obtener más información sobre UDT, consulte https://udt.sourceforge.io/
También puede encontrar la implementación de C++ de referencia en 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 ? ;
}
}