tokio udt
v0.1.0-alpha.8
Implementasi Protokol Transfer Data (UDT) berbasis UDP berdasarkan primitif Tokio.
UDT adalah protokol transportasi data berkinerja tinggi. Ini dirancang khusus untuk aplikasi intensif data melalui jaringan area luas berkecepatan tinggi, untuk mengatasi masalah efisiensi dan keadilan TCP. Seperti namanya, UDT dibangun di atas UDP dan menyediakan layanan streaming data dan pesan yang andal.
Untuk mempelajari lebih lanjut tentang UDT, lihat https://udt.sourceforge.io/
Anda juga dapat menemukan referensi implementasi C++ di 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 ? ;
}
}