aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorbnewbold <bnewbold@robocracy.org>2016-05-26 16:51:32 -0400
committerbnewbold <bnewbold@robocracy.org>2016-05-26 16:51:32 -0400
commite792fe13178fa5ec39294fc5bf53a3ecb5e43a1b (patch)
tree5da2b20bb140064f9ca7b8201176c4defa9e2601 /src
downloaducp-e792fe13178fa5ec39294fc5bf53a3ecb5e43a1b.tar.gz
ucp-e792fe13178fa5ec39294fc5bf53a3ecb5e43a1b.zip
init repo; basic uTP send/receive
Diffstat (limited to 'src')
-rw-r--r--src/bin/iceftp.rs16
-rw-r--r--src/bin/iceftpd.rs33
2 files changed, 49 insertions, 0 deletions
diff --git a/src/bin/iceftp.rs b/src/bin/iceftp.rs
new file mode 100644
index 0000000..3f19dbe
--- /dev/null
+++ b/src/bin/iceftp.rs
@@ -0,0 +1,16 @@
+
+extern crate utp;
+
+use utp::UtpSocket;
+
+fn main() {
+ // Bind to port 3540
+ let addr = "127.0.0.1:3540";
+ let mut socket = UtpSocket::connect(addr).expect("Error connecting to remote peer");
+
+ // Send a string
+ socket.send_to("Hi there!".as_bytes()).expect("Write failed");
+
+ // Close the socket
+ socket.close().expect("Error closing connection");
+}
diff --git a/src/bin/iceftpd.rs b/src/bin/iceftpd.rs
new file mode 100644
index 0000000..af29503
--- /dev/null
+++ b/src/bin/iceftpd.rs
@@ -0,0 +1,33 @@
+
+extern crate utp;
+
+use utp::{UtpSocket, UtpListener};
+use std::str;
+
+fn main() {
+ // Connect to an hypothetical local server running on port 3540
+ let addr = "127.0.0.1:3540";
+ // Accept connection from anybody
+ let listener = UtpListener::bind(addr).expect("Error binding to local port");
+
+ for connection in listener.incoming() {
+
+ let (mut socket, _src) = connection.unwrap();
+ println!("Got connection from {}", socket.peer_addr().unwrap());
+
+ loop {
+
+ let mut buf = [0; 1000];
+ let (amt, _src) = socket.recv_from(&mut buf).ok().unwrap();
+ if amt <= 0 {
+ break;
+ }
+ let buf = &buf[..amt];
+ let s = str::from_utf8(buf).unwrap();
+ println!("\tgot: {}", s);
+
+ }
+
+ }
+
+}