GNU libmicrohttpd 0.9.35 发布 - 开源中国社区
GNU libmicrohttpd 0.9.35 发布
oschina 2014年05月03日

GNU libmicrohttpd 0.9.35 发布

oschina oschina 发布于2014年05月03日 收藏 15 评论 1

有免费的MySQL,为什么还要买? >>>  

GNU libmicrohttpd 0.9.35 发布,此版本更新内容如下:

  • Adds MHD_OPTION_HTTPS_MEM_DHPARAMS to allow applications to enable perfect forward secrecy

  • Increases FD_SETSIZE and use of native mutex on W32; makes various improvements to the build system (updated macros, new configure options)

  • Improved header compatibility with MSVC. Adds an MHD_is_feature_supported() function to allow the applications to test for enabled features

  • Removes unescaping in the URI path to better comply with the specification ("+" in the path is no longer converted to a space)

  • Fixes looping issue in handling HTTPS connection resets

  • Switches to the OpenSSL cipher list "HIGH" in libmicrospdy

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


本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:GNU libmicrohttpd 0.9.35 发布
分享
评论(1)
最新评论
0

没见用过

顶部