luchenqun
11/17/2017 - 4:20 AM

libmicrohttpd server

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;
}