tokio udt
v0.1.0-alpha.8
تنفيذ بروتوكول نقل البيانات (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 ? ;
}
}