2 个版本

0.1.1 2020年9月21日
0.1.0 2020年9月17日

#5 in #kcp

MIT/Apache

48KB
1K SLoC

kcp 客户端

线程安全 kcp 客户端

示例 Echo

use kcpclient::*;
use std::error::Error;
use std::sync::Arc;
use std::thread;
use std::sync::atomic::{AtomicBool, Ordering};
use std::thread::sleep;
use std::time::Duration;


fn main() {
    let mut config = KcpConfig::default();
    config.nodelay = Some(KcpNoDelayConfig::fastest());

    let kcp_client = KcpClient::connect("127.0.0.1:5555", config).unwrap();
    kcp_client.init_conv().unwrap();
    let is_run =Arc::new( AtomicBool::new(true));
    let kcp_client = Arc::new(kcp_client);
    let up = kcp_client.clone();
    let run_arc=is_run.clone();
    let th=thread::spawn(move || {
        while run_arc.load(Ordering::Acquire) {
            up.update().unwrap();
            sleep(Duration::from_millis(10));
         }
    });

     for _ in 0..100 {
         kcp_client.send(b"123123123123").unwrap();
         let res = kcp_client.recv();
         match res {
             Ok(data)=>{
                println!("{}", String::from_utf8_lossy(&data));
             },
             Err(er)=>{
                println!("{}",er);
            }
         }
     }

     is_run.store(false,Ordering::Release);
    th.join().unwrap();
 }

依赖项

~1.5MB
~23K SLoC