]> git.lizzy.rs Git - dragonnet-example.git/blob - cs_example.c
Add example code
[dragonnet-example.git] / cs_example.c
1 #include <assert.h>
2 #include <pthread.h>
3 #include <stdio.h>
4 #include <stdlib.h>
5
6 #include "deps/dragonnet/listen.h"
7
8 static DragonnetListener *l;
9
10 static void connect_func(DragonnetPeer *p)
11 {
12         char *str_addr = dragonnet_addr_str(p->raddr);
13         printf("new connection from %s\n", str_addr);
14         free(str_addr);
15
16         dragonnet_listener_close(l);
17         dragonnet_listener_delete(l);
18         l = NULL;
19 }
20
21 static void *srv_func()
22 {
23         l = dragonnet_listener_new("[::1]:50000", &connect_func);
24         assert(l != NULL);
25
26         dragonnet_listener_run(l);
27         return NULL;
28 }
29
30 static void *clt_func()
31 {
32         DragonnetPeer *p = dragonnet_connect("[::1]:50000");
33         assert(p != NULL);
34
35         dragonnet_peer_run(p);
36         dragonnet_peer_close(p);
37         dragonnet_peer_delete(p);
38         return NULL;
39 }
40
41 int main()
42 {
43         pthread_t srv_thread, clt_thread;
44         pthread_create(&srv_thread, NULL, &srv_func, NULL);
45         pthread_create(&clt_thread, NULL, &clt_func, NULL);
46
47         pthread_join(clt_thread, NULL);
48         pthread_join(srv_thread, NULL);
49 }