Skip to content

Instantly share code, notes, and snippets.

@juev
Forked from hintjens/gist:5480625
Last active August 29, 2015 14:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save juev/d084049ba3e07b2ee7f6 to your computer and use it in GitHub Desktop.
Save juev/d084049ba3e07b2ee7f6 to your computer and use it in GitHub Desktop.
// Minimal HTTP server in 0MQ
#include "czmq.h"
int main (void)
{
zctx_t *ctx = zctx_new ();
void *router = zsocket_new (ctx, ZMQ_ROUTER);
zsocket_set_router_raw (router, 1);
int rc = zsocket_bind (router, "tcp://*:8080");
assert (rc != -1);
while (true) {
// Get HTTP request
zframe_t *handle = zframe_recv (router);
if (!handle)
break; // Ctrl-C interrupt
char *request = zstr_recv (router);
puts (request); // Professional Logging(TM)
free (request); // We throw this away
// Send Hello World response
zframe_send (&handle, router, ZFRAME_MORE + ZFRAME_REUSE);
zstr_send (router, "HTTP/1.0 200 OK\r\nContent-Type: text/plain\r\n\r\nHello, World!");
// Close connection to browser
zframe_send (&handle, router, ZFRAME_MORE);
zmq_send (router, NULL, 0, 0);
}
zctx_destroy (&ctx);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment