5个版本
使用旧的Rust 2015
0.0.5 | 2018年1月1日 |
---|---|
0.0.4 | 2017年12月3日 |
0.0.3 | 2017年4月3日 |
0.0.2 | 2016年1月12日 |
0.0.1 | 2015年12月24日 |
#14 in #connection-manager
40KB
919 行
net-utils
提供包括TCP/SSL连接和连接管理器的网络实用工具。
以下是使用连接池的示例。
在Cargo.toml中定义以下依赖项
[dependencies.net-utils]
git = "https://github.com/rohitjoshi/net-utils.git"
以下是main.rs
extern crate "net-utils" as utils;
use std::default::Default;
use std::sync::{ Arc, Mutex };
use utils::net::config;
use utils::net::poolmgr;
fn main() {
let mut cfg : config::Config = Default::default();
//set port to 80
cfg.port= Some(80);
//set host to
cfg.server = Some("google.com".to_string());
let mut pool = poolmgr::ConnectionPool::new(2, 20, true, &cfg);
//get the connection
let mut conn = pool.aquire().unwrap();
conn.writer.write_str("GET google.com\r\n").unwrap();
conn.writer.flush().unwrap();
let r = conn.reader.read_line();
println!("Received {}", r);
pool.release(conn);
}
以下是上述示例在多线程环境中的使用
extern crate "net-utils" as utils;
use std::default::Default;
use std::sync::{ Arc, Mutex };
use utils::net::config;
use utils::net::poolmgr;
fn main() {
let mut cfg : config::Config = Default::default();
//set port to 80
cfg.port= Some(80);
//set host to
cfg.server = Some("google.com".to_string());
let mut pool = poolmgr::ConnectionPool::new(2, 20, true, &cfg);
let pool = Arc::new(Mutex::new(pool));
for _ in range(0u, 2) {
let pool = pool.clone();
spawn(move || {
let mut conn = pool.lock().aquire().unwrap();
conn.writer.write_str("GET google.com\r\n").unwrap();
conn.writer.flush().unwrap();
let r = conn.reader.read_line();
println!("Received {}", r);
pool.lock().release(conn);
});
}
}
要启用SSL连接,使用--feature ssl进行编译,例如:要执行SSL测试用例,请运行cargo test --features ssl
许可证
根据您选择,许可协议为
- Apache许可证第2版 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交的任何贡献,将根据上述方式双许可,不附加任何额外条款或条件。
依赖项
~2.2–3.5MB
~72K SLoC