嵌入式 HTTP 服務器 GNU libmicrohttpd 0.9.15 發布

webphp 13年前發布 | 9K 次閱讀 HTTP

GNU libmicrohttpd 是一個小型的嵌入式 HTTP 服務器 的 C 類庫,支持 HTTP 1.1 可以同時偵聽多個端口,下面是一個最為簡單的使用例子:

#include <microhttpd.h>

include <stdlib.h>

include <string.h>

include <stdio.h>

define PAGE "<html><head><title>libmicrohttpd demo</title>"\

         "</head><body>libmicrohttpd demo</body></html>"

static int ahc_echo(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 ** ptr) { static int dummy; const char page = cls; struct MHD_Response * response; int ret;

if (0 != strcmp(method, "GET")) return MHD_NO; / unexpected method / if (&dummy != ptr) { / The first time only the headers are valid, do not respond in the first round... / ptr = &dummy; return MHD_YES; } if (0 != upload_data_size) return MHD_NO; / upload data in a GET!? / ptr = NULL; / clear context pointer / response = MHD_create_response_from_data(strlen(page), (void*) page, MHD_NO, MHD_NO); ret = MHD_queue_response(connection, MHD_HTTP_OK, response); MHD_destroy_response(response); return ret; }

int main(int argc, char * argv) { struct MHD_Daemon d; if (argc != 2) { printf("%s PORT\n", argv[0]); return 1; } d = MHD_start_daemon(MHD_USE_THREAD_PER_CONNECTION, atoi(argv[1]), NULL, NULL, &ahc_echo, PAGE, MHD_OPTION_END); if (d == NULL) return 1; (void) getc (); MHD_stop_daemon(d); return 0; }</pre> GNU libmicrohttpd 0.9.15 發布了,該版本增加對 URL 參數中不帶 “=” 的解析;修復了非 Linux 系統上一些管道的處理問題;對響應進行清理使之更及時的處理請求;在測試用例和文檔方面也做了完善。
項目地址http://www.gnu.org/software/libmicrohttpd/
</span>

 本文由用戶 webphp 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!