tokio udt
v0.1.0-alpha.8
การใช้งาน Data Transfer Protocol (UDT) ที่ใช้ UDP บนพื้นฐานของ Tokio ดั้งเดิม
UDT เป็นโปรโตคอลการขนส่งข้อมูลที่มีประสิทธิภาพสูง ได้รับการออกแบบมาโดยเฉพาะสำหรับแอปพลิเคชันที่ใช้ข้อมูลจำนวนมากบนเครือข่ายบริเวณกว้างความเร็วสูง เพื่อเอาชนะปัญหาด้านประสิทธิภาพและความยุติธรรมของ TCP ตามชื่อที่ระบุ UDT ถูกสร้างขึ้นบน UDP และให้บริการทั้งการสตรีมข้อมูลและบริการส่งข้อความที่เชื่อถือได้
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ UDT ดู https://udt.sourceforge.io/
คุณยังสามารถค้นหาการใช้งาน C++ อ้างอิงได้ที่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 ? ;
}
}