tokio UDP port open in hptp-recv
This commit is contained in:
parent
03eff314a7
commit
da55e83e3b
|
@ -96,6 +96,7 @@ dependencies = [
|
||||||
name = "hptp-recv"
|
name = "hptp-recv"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"failure",
|
||||||
"hptp",
|
"hptp",
|
||||||
"tokio",
|
"tokio",
|
||||||
]
|
]
|
||||||
|
@ -104,9 +105,7 @@ dependencies = [
|
||||||
name = "hptp-send"
|
name = "hptp-send"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"failure",
|
|
||||||
"hptp",
|
"hptp",
|
||||||
"tokio",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|
|
@ -8,4 +8,6 @@ edition = "2018"
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
hptp = { path = "../hptp" }
|
hptp = { path = "../hptp" }
|
||||||
|
tokio = {version = "0.2.*", features = ["rt-core", "io-std", "io-util", "udp"]}
|
||||||
|
failure = "0.1.7"
|
||||||
|
|
|
@ -1,5 +1,33 @@
|
||||||
|
extern crate failure;
|
||||||
extern crate hptp;
|
extern crate hptp;
|
||||||
|
extern crate tokio;
|
||||||
|
|
||||||
fn main() {
|
use failure::Error;
|
||||||
println!("{}", hptp::RECV_GREETING);
|
use hptp::log::Logger;
|
||||||
|
use std::net::Ipv4Addr;
|
||||||
|
use tokio::net::UdpSocket;
|
||||||
|
|
||||||
|
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||||
|
let mut rt = tokio::runtime::Runtime::new()?;
|
||||||
|
let mut log = Logger::new();
|
||||||
|
let fut = start(&mut log);
|
||||||
|
Ok(rt.block_on(fut)?)
|
||||||
|
}
|
||||||
|
|
||||||
|
async fn start(log: &mut Logger) -> Result<(), Error> {
|
||||||
|
let host = (Ipv4Addr::LOCALHOST, 3700);
|
||||||
|
let sock = UdpSocket::bind(host).await?;
|
||||||
|
|
||||||
|
log.bound(sock.local_addr()?.port()).await?;
|
||||||
|
|
||||||
|
let (mut rx, _tx) = sock.split();
|
||||||
|
let mut buf = [0u8; 2000];
|
||||||
|
loop {
|
||||||
|
let (n, _who) = rx.recv_from(&mut buf).await?;
|
||||||
|
log.debug_msg(match String::from_utf8(buf[..n].into()) {
|
||||||
|
Ok(s) => format!("got: {:?}", s),
|
||||||
|
Err(e) => format!("got: {:?} (invalid utf8)", e.as_bytes()),
|
||||||
|
})
|
||||||
|
.await?;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue