Popularity
6.3
Growing
Activity
0.0
Stable
1,252
70
181

Code Quality Rank: L3
Programming language: C
License: MIT License
Tags: Networking    

Dyad.c alternatives and similar libraries

Based on the "Networking" category.
Alternatively, view Dyad.c alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of Dyad.c or a related project?

Add another 'Networking' Library

README

dyad.c

Overview

Dyad.c is an asynchronous networking library which aims to be lightweight, portable and easy to use. It can be used both to create small standalone servers and to provide network support to existing projects.

Getting started

The [dyad.c](src/dyad.c?raw=1) and [dyad.h](src/dyad.h?raw=1) files can be dropped into an existing project; if you're using Windows you will also have to link to ws2_32.

An overview of the API can be found at [doc/api.md](doc/api.md).

Usage examples can be found at [example/](example/).

Server example

A simple server which listens on port 8000 and echoes whatever is sent to it:

#include <stdlib.h>
#include "dyad.h"

static void onData(dyad_Event *e) {
  dyad_write(e->stream, e->data, e->size);
}

static void onAccept(dyad_Event *e) {
  dyad_addListener(e->remote, DYAD_EVENT_DATA, onData, NULL);
  dyad_writef(e->remote, "Echo server\r\n");
}

int main(void) {
  dyad_init();

  dyad_Stream *serv = dyad_newStream();
  dyad_addListener(serv, DYAD_EVENT_ACCEPT, onAccept, NULL);
  dyad_listen(serv, 8000);

  while (dyad_getStreamCount() > 0) {
    dyad_update();
  }

  dyad_shutdown();
  return 0;
}

Client example

A simple example program which connects to a daytime server and prints the response:

#include <stdio.h>
#include "dyad.h"

static void onConnect(dyad_Event *e) {
  printf("connected: %s\n", e->msg);
}

static void onData(dyad_Event *e) {
  printf("%s", e->data);
}

int main(void) {
  dyad_init();

  dyad_Stream *s = dyad_newStream();
  dyad_addListener(s, DYAD_EVENT_CONNECT, onConnect, NULL);
  dyad_addListener(s, DYAD_EVENT_DATA,    onData,    NULL);
  dyad_connect(s, "time-nw.nist.gov", 13);

  while (dyad_getStreamCount() > 0) {
    dyad_update();
  }

  dyad_shutdown();
  return 0;
}

License

This library is free software; you can redistribute it and/or modify it under the terms of the MIT license. See [LICENSE](LICENSE) for details.


*Note that all licence references and agreements mentioned in the Dyad.c README section above are relevant to that project's source code only.