#sockets #raw-sockets #low-level #api #tcp-socket #winapi

lazy-socket

底层原始套接字API。工作进行中

11次发布

使用旧的Rust 2015

0.3.0 2018年2月19日
0.2.2 2018年2月19日
0.2.1 2017年4月30日
0.2.0 2017年3月19日
0.0.4 2017年1月31日

#12 in #raw-sockets

每月30次下载
toa-ping中使用

MIT许可证

48KB
963

lazy-socket

Build status Build Status Crates.io Docs.rs

该库作为套接字API的薄包装层。它提供必要的最小安全性和易于使用。

有点过时了

似乎我不再需要这个库了,因为已经有socket2alexcrichton

他绝对更可靠,我的库可能已经被遗忘了。所以用socket2代替。

示例

创建TCP套接字并以非阻塞模式连接。

extern crate lazy_socket;

use std::net;
use std::str::FromStr;

use lazy_socket::raw::{
    Socket,
    Family,
    Protocol,
    Type,
    select
};

fn main() {
    let timeout = 1000;
    let socket = match Socket::new(Family::IPv4, Type::STREAM, Protocol::TCP) {
        Ok(socket) => socket,
        Err(error) => {
            println!("Couldn't open socket. Erro: {}", error);
            return;
        }
    };

    let dest = net::SocketAddr::from_str("192.168.0.1:80").unwrap();

    let _ = socket.set_blocking(false);
    let _ = socket.connect(&dest);
    match select(&[], &[&socket], &[&socket], Some(timeout)) {
          Ok(_) => println!("Connected!"),
          Err(error) => println!("Failed to connect. Error:{}", error)
    }
}

依赖关系

~140–355KB