Skip to content

Instantly share code, notes, and snippets.

@luchenqun
Last active November 17, 2017 04:21
Show Gist options
  • Save luchenqun/54be78b0e728c5d615853c053e8e54c1 to your computer and use it in GitHub Desktop.
Save luchenqun/54be78b0e728c5d615853c053e8e54c1 to your computer and use it in GitHub Desktop.
libmicrohttpd server
/* Feel free to use this example code in any way
you see fit (Public Domain) */
#include <sys/types.h>
#ifndef _WIN32
#include <sys/select.h>
#include <sys/socket.h>
#else
#include <winsock2.h>
#endif
#include <string.h>
#include <microhttpd.h>
#include <stdio.h>
#define PORT 8888
static int
answer_to_connection(void *cls, struct MHD_Connection *connection,
const char *url, const char *method,
const char *version, const char *upload_data,
size_t *upload_data_size, void **con_cls)
{
static int count = 1;
const char *page = "<html><body>Hello, browser!</body></html>";
count++;
const char *tmp = count % 2 ? "111111" : "222222222";
printf("count = %d, %s", count, tmp);
struct MHD_Response *response;
int ret = 0;
if (count % 2 == 0) {
response =
MHD_create_response_from_buffer(strlen(tmp), (void *)tmp,
MHD_RESPMEM_PERSISTENT);
ret = MHD_queue_response(connection, MHD_HTTP_OK, response);
MHD_destroy_response(response);
}
return ret;
}
int
main()
{
struct MHD_Daemon *daemon;
daemon = MHD_start_daemon(MHD_USE_AUTO | MHD_USE_INTERNAL_POLLING_THREAD, PORT, NULL, NULL,
&answer_to_connection, NULL, MHD_OPTION_END);
if (NULL == daemon)
return 1;
(void)getchar();
MHD_stop_daemon(daemon);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment