3个版本 (稳定版)
1.3.171 | 2021年8月29日 |
---|---|
0.1.0 | 2021年8月29日 |
在网络编程类别中排名第1812
235KB
5K SLoC
包含(模糊的autoconf代码,1KB)vendor/enet/configure.ac
enet-rs
ENet库的Rust绑定,ENet是一个可靠的UDP网络库。
安装
将以下内容添加到您的Cargo.toml
文件中
[dependencies]
enet-rs = "1.3.17"
示例
server.rs
:
use enet_rs::enet::{
ENET_HOST_ANY,
ENetAddress,
enet_host_create,
};
fn main() {
let address = ENetAddress {
host: ENET_HOST_ANY,
port: 2555
};
unsafe {
let server = enet_host_create(&address,
32,
2,
0,
0);
if server.is_null() {
println!("An error occurred while trying to create an ENet server host.");
}
}
loop {
/* does nothing */
}
}
client.rs
:
use std::ptr::null;
use std::mem::MaybeUninit;
use std::ffi::CString;
use enet_rs::enet::{
ENetEventType,
enet_host_create,
enet_address_set_host,
enet_host_connect,
enet_host_service,
enet_peer_reset
};
fn main() {
unsafe {
let client = enet_host_create(null(),
1,
2,
0,
0);
if client.is_null() {
panic!("An error occurred while trying to create an ENet client host.")
}
let mut address_ = MaybeUninit::uninit();
enet_address_set_host(address_.as_mut_ptr(), (&CString::new("127.0.0.1").unwrap()).as_ptr());
let mut address = address_.assume_init();
address.port = 2555;
let peer = enet_host_connect(client, &address, 2, 0);
if peer.is_null() {
println!("No available peers for initiating an ENet connection.\n");
}
let mut event_ = MaybeUninit::uninit();
loop {
if enet_host_service(client, event_.as_mut_ptr(), 5000) > 0 {
let event = event_.assume_init();
match event.type_ {
ENetEventType::ENET_EVENT_TYPE_CONNECT => {
println!("connected to server.")
}
_ => enet_peer_reset(peer)
}
}
}
}
}
完整示例
完整的示例可以在examples
目录中找到,详细介绍了库的基本功能。
文档
运行cargo doc
或访问docs.rs获取文档。
授权
enet-rs授权使用ISC授权。更多信息请参阅LICENSE.md
文件。
依赖
~0.4–270KB