local_fire_departmentHoneystax
search⌘K
loginLog Inperson_addSign Up
layers
HONEYSTAX TERMINAL v1.0
HomeNewsSavedSubmit
Back to the live board
D

dyad

App

Asynchronous networking for C

Copy the install, test the workflow, then decide if it earns a permanent slot.

1,456
Why nowArchived

Strong idea surface, weaker maintenance signal. Steal the pattern before you commit.

DecisionHigh-conviction move

Copy the install, test the workflow, then decide if it earns a permanent slot.

Trial costMedium lift

Reasonable to try, but it will take more than a quick skim to get real signal.

Risk100/100

GitHub health 42/100. no security policy. Archived repo plus maintenance drag means copy patterns, not the whole tool.

What You Are Adopting

AI Agent

Universal

Model

Multiple

Build Time

Minutes

Move Fast

open_in_new

No direct local install flow.

Open the project page, steal the pattern, and decide fast if it deserves a deeper test.

About

Asynchronous networking for C. An open-source app for the AI coding ecosystem.

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 and dyad.h 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.

Usage examples can be found at 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 for details.

Installation

ws2_32

Open Live ProjectAudit Repo

Reviews0

Log in to write a review.

ArchivedThis repo is archived
bug_report16open issues
Submitted August 3, 2014

auto_awesomeYour strongest next moves after dyad