Merge pull request #11270 from haslinghuis/rename_attr
[betaflight.git] / lib / main / dyad / README.md
blob23902ae4c35b349aee3ad3f107c2426271a981c2
2 ![dyad.c](https://cloud.githubusercontent.com/assets/3920290/3942261/5de470e4-255d-11e4-95a9-5f97fa9f3a57.png)
4 ## Overview
5 Dyad.c is an asynchronous networking library which aims to be lightweight,
6 portable and easy to use. It can be used both to create small standalone
7 servers and to provide network support to existing projects.
9 ## Getting started
10 The [dyad.c](src/dyad.c?raw=1) and [dyad.h](src/dyad.h?raw=1) files can be
11 dropped into an existing project; if you're using Windows you will also have to
12 link to `ws2_32`.
14 An overview of the API can be found at [doc/api.md](doc/api.md).
16 Usage examples can be found at [example/](example/).
18 ## Server example
19 A simple server which listens on port 8000 and echoes whatever is sent to it:
20 ```c
21 #include <stdlib.h>
22 #include "dyad.h"
24 static void onData(dyad_Event *e) {
25   dyad_write(e->stream, e->data, e->size);
28 static void onAccept(dyad_Event *e) {
29   dyad_addListener(e->remote, DYAD_EVENT_DATA, onData, NULL);
30   dyad_writef(e->remote, "Echo server\r\n");
33 int main(void) {
34   dyad_init();
36   dyad_Stream *serv = dyad_newStream();
37   dyad_addListener(serv, DYAD_EVENT_ACCEPT, onAccept, NULL);
38   dyad_listen(serv, 8000);
40   while (dyad_getStreamCount() > 0) {
41     dyad_update();
42   }
44   dyad_shutdown();
45   return 0;
47 ```
49 ## Client example
50 A simple example program which connects to a
51 [daytime](http://en.wikipedia.org/wiki/Daytime_Protocol) server and prints the
52 response:
53 ```c
54 #include <stdio.h>
55 #include "dyad.h"
57 static void onConnect(dyad_Event *e) {
58   printf("connected: %s\n", e->msg);
61 static void onData(dyad_Event *e) {
62   printf("%s", e->data);
65 int main(void) {
66   dyad_init();
68   dyad_Stream *s = dyad_newStream();
69   dyad_addListener(s, DYAD_EVENT_CONNECT, onConnect, NULL);
70   dyad_addListener(s, DYAD_EVENT_DATA,    onData,    NULL);
71   dyad_connect(s, "time-nw.nist.gov", 13);
73   while (dyad_getStreamCount() > 0) {
74     dyad_update();
75   }
76   
77   dyad_shutdown();
78   return 0;
80 ```
83 ## License
84 This library is free software; you can redistribute it and/or modify it under
85 the terms of the MIT license. See [LICENSE](LICENSE) for details.