]> git.lizzy.rs Git - dragonnet-example.git/blobdiff - cs_example.c
Add example code
[dragonnet-example.git] / cs_example.c
diff --git a/cs_example.c b/cs_example.c
new file mode 100644 (file)
index 0000000..c6ccd9d
--- /dev/null
@@ -0,0 +1,49 @@
+#include <assert.h>
+#include <pthread.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "deps/dragonnet/listen.h"
+
+static DragonnetListener *l;
+
+static void connect_func(DragonnetPeer *p)
+{
+       char *str_addr = dragonnet_addr_str(p->raddr);
+       printf("new connection from %s\n", str_addr);
+       free(str_addr);
+
+       dragonnet_listener_close(l);
+       dragonnet_listener_delete(l);
+       l = NULL;
+}
+
+static void *srv_func()
+{
+       l = dragonnet_listener_new("[::1]:50000", &connect_func);
+       assert(l != NULL);
+
+       dragonnet_listener_run(l);
+       return NULL;
+}
+
+static void *clt_func()
+{
+       DragonnetPeer *p = dragonnet_connect("[::1]:50000");
+       assert(p != NULL);
+
+       dragonnet_peer_run(p);
+       dragonnet_peer_close(p);
+       dragonnet_peer_delete(p);
+       return NULL;
+}
+
+int main()
+{
+       pthread_t srv_thread, clt_thread;
+       pthread_create(&srv_thread, NULL, &srv_func, NULL);
+       pthread_create(&clt_thread, NULL, &clt_func, NULL);
+
+       pthread_join(clt_thread, NULL);
+       pthread_join(srv_thread, NULL);
+}