<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          GNU libmicrohttpd

          聯(lián)合創(chuàng)作 · 2023-10-01 13:45

          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;
          }
          瀏覽 49
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天天干天天干天天干天天射 | 久久性视频 | 国产精品无码性爱视频 | 91久久久久久久久久免费视频 | 免费观看黄色视频 |