summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorYuval Adam <_@yuv.al>2018-07-06 19:20:33 +0300
committerYuval Adam <_@yuv.al>2018-07-06 19:20:33 +0300
commit77318de11fd8bc910734ccb79ba4a6a45b4d535f (patch)
treebd47351dc1c7a3050aad3f9ee00a4e60f2db9dbe /src
parentd0f7dff9a51fa33612b71d03a3736dd107e9a747 (diff)
Send out a discovery search request
Diffstat (limited to 'src')
-rw-r--r--src/main.rs4
-rw-r--r--src/upnp.rs15
2 files changed, 18 insertions, 1 deletions
diff --git a/src/main.rs b/src/main.rs
index 4205b78..3db18f7 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -7,6 +7,7 @@ use std::path::Path;
use std::process;
mod cli;
+mod upnp;
fn main() {
let app = App::new("Rustcast")
@@ -31,5 +32,6 @@ fn main() {
}
// test a single char read
- cli::read_char();
+ // cli::read_char();
+ upnp::discover();
}
diff --git a/src/upnp.rs b/src/upnp.rs
new file mode 100644
index 0000000..de67c9c
--- /dev/null
+++ b/src/upnp.rs
@@ -0,0 +1,15 @@
+use std::net::UdpSocket;
+
+const SEARCH_REQUEST: &'static str = "M-SEARCH * HTTP/1.1\r\n
+Host: 239.255.255.250:1900\r\n
+Man: \"ssdp:discover\"\r\n
+ST: ssdp:all\r\n
+MX: 3\r\n
+User-Agent: rustcast/0.1.0\r\n\r\n";
+
+pub fn discover() {
+ println!("Discovering...");
+ let socket = UdpSocket::bind("[::]:0").unwrap();
+ socket.connect("239.255.255.250:1900").unwrap();
+ socket.send_to(SEARCH_REQUEST.as_bytes(), "239.255.255.250:1900").expect("couldn't send data");
+}