在C语言中创建一个HTTP服务器并不是一个简单的任务,但我们可以使用一些现有的库如libevent或者GNU Libmicrohttpd来简化这个任务。以下是一个使用GNU Libmicrohttpd的简单实例。
#include <microhttpd.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#define PORT 8888
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)
{
const char *page = "<html><body>Hello, browser!</body></html>";
struct MHD_Response *response;
int ret;
response = MHD_create_response_from_buffer (strlen (page),
(void*) page,
MHD_RESPMEM_PERSISTENT);
if (response)
{
ret = MHD_queue_response (connection, MHD_HTTP_OK, response);
MHD_destroy_response (response);
return ret;
}
else
return MHD_NO;
}
int main ()
{
struct MHD_Daemon *daemon;
daemon = MHD_start_daemon (MHD_USE_INTERNAL_THREADING, PORT, NULL, NULL,
&answer_to_connection, NULL, MHD_OPTION_END);
if (NULL == daemon) return 1;
getchar ();
MHD_stop_daemon (daemon);
return 0;
}
代码将创建一个运行在8888端口的简单HTTP服务器,它会对每一个请求返回一个简单的HTML页面。在一个真正的应用中,你会需要解析URL和HTTP方法,以及可能的POST或GET数据,然后根据这些数据恰当地生成响应。
请确保安装和链接正确的库。对于GCC,可以使用下面的命令进行编译和链接:
gcc filename.c -o outputfile -l microhttpd
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/173297.html