summaryrefslogtreecommitdiff
path: root/src/examples/vio-udplistener
diff options
context:
space:
mode:
authorAndrew Shadura <andrew@shadura.me>2014-01-28 15:21:50 +0100
committerAndrew Shadura <andrew@shadura.me>2014-01-28 15:21:50 +0100
commit51addbcf27d7b06dae80a0e39e5f5f83e94dd8ae (patch)
tree3d00bef2d26f97257ec6f4835505cd300054a1e3 /src/examples/vio-udplistener
parent1ed00f1a2893b43195f3fc747988da0bf6006797 (diff)
Update to libmowgli 2.0.0
Diffstat (limited to 'src/examples/vio-udplistener')
-rw-r--r--src/examples/vio-udplistener/Makefile7
-rw-r--r--src/examples/vio-udplistener/vio-udplistener.c45
2 files changed, 52 insertions, 0 deletions
diff --git a/src/examples/vio-udplistener/Makefile b/src/examples/vio-udplistener/Makefile
new file mode 100644
index 0000000..1be3936
--- /dev/null
+++ b/src/examples/vio-udplistener/Makefile
@@ -0,0 +1,7 @@
+PROG_NOINST = vio-udplistener${PROG_SUFFIX}
+SRCS = vio-udplistener.c
+
+include ../../../buildsys.mk
+
+CPPFLAGS += -I../../libmowgli
+LIBS += -L../../libmowgli -lmowgli-2
diff --git a/src/examples/vio-udplistener/vio-udplistener.c b/src/examples/vio-udplistener/vio-udplistener.c
new file mode 100644
index 0000000..9de4e69
--- /dev/null
+++ b/src/examples/vio-udplistener/vio-udplistener.c
@@ -0,0 +1,45 @@
+/* vio-udplistener.c - An example of the VIO API
+ * To use: nc -u localhost, and then type stuff and hit enter. :p
+ * This example is public domain.
+ */
+
+#include <mowgli.h>
+
+#define BUFSIZE 2048
+
+#define PROTO AF_INET6
+#define LISTEN "::ffff:127.0.0.1" /* 6to4 mapping */
+#define PORT 31337
+
+#define ECHOBACK "Echo: "
+
+int main (void)
+{
+ mowgli_vio_t *vio = mowgli_vio_create(NULL);
+ mowgli_vio_sockaddr_t addr;
+
+ mowgli_vio_sockaddr_create(&addr, PROTO, LISTEN, 31337);
+
+ if (mowgli_vio_socket(vio, PROTO, SOCK_DGRAM, 0))
+ return EXIT_FAILURE;
+
+ if (mowgli_vio_bind(vio, &addr))
+ return EXIT_FAILURE;
+
+ while (true)
+ {
+ char buf[BUFSIZE] = "";
+ mowgli_vio_sockdata_t sockinfo;
+
+ mowgli_vio_recvfrom(vio, buf, sizeof(buf), &addr);
+
+ mowgli_vio_sockaddr_info(&addr, &sockinfo);
+
+ printf("Recieved bytes from addr [%s]:%hu: %s", sockinfo.host, sockinfo.port, buf);
+
+ mowgli_vio_sendto(vio, ECHOBACK, sizeof(ECHOBACK), &addr);
+ mowgli_vio_sendto(vio, buf, strlen(buf), &addr);
+ }
+
+ return EXIT_SUCCESS; /* Not reached */
+}