当前位置: 首页 > news >正文

开发员给我用织梦做的网站石岩网站建设 0755

开发员给我用织梦做的网站,石岩网站建设 0755,中标公告 网站建设,小学生做网站基于GLib和libsoup的简单Web服务器示例#xff0c;它可以处理静态HTML文件和动态JSON请求#xff0c;并展示如何获取URL参数。 步骤#xff1a; 初始化GLib和libsoup。创建一个处理静态HTML文件的处理器。创建一个处理动态JSON请求的处理器。获取URL参数并在JSON响应中返回…基于GLib和libsoup的简单Web服务器示例它可以处理静态HTML文件和动态JSON请求并展示如何获取URL参数。 步骤 初始化GLib和libsoup。创建一个处理静态HTML文件的处理器。创建一个处理动态JSON请求的处理器。获取URL参数并在JSON响应中返回。 代码 #include libsoup/soup.h #include glib.h// 处理静态HTML文件请求 static void handle_static_html(SoupServer *server, SoupMessage *msg, const char *path, GHashTable *query, SoupClientContext *client, gpointer user_data) {SoupMessageHeaders *response_headers msg-response_headers;soup_message_headers_set_content_type(response_headers, text/html, NULL);// 读取静态HTML文件GError *error NULL;gchar *content NULL;g_file_get_contents(/path/to/static.html, content, NULL, error);if (error) {soup_message_set_status(msg, SOUP_STATUS_INTERNAL_SERVER_ERROR);soup_message_body_append(msg-response_body, SOUP_MEMORY_COPY, Internal Server Error, 21);g_error_free(error);} else {soup_message_set_status(msg, SOUP_STATUS_OK);soup_message_body_append(msg-response_body, SOUP_MEMORY_COPY, content, strlen(content));g_free(content);}soup_message_body_complete(msg-response_body); }// 处理动态JSON请求 static void handle_dynamic_json(SoupServer *server, SoupMessage *msg, const char *path, GHashTable *query, SoupClientContext *client, gpointer user_data) {SoupMessageHeaders *response_headers msg-response_headers;soup_message_headers_set_content_type(response_headers, application/json, NULL);// 获取URL参数const char *name g_hash_table_lookup(query, name);if (!name) {name World;}// 创建JSON响应gchar *response g_strdup_printf({\message\: \Hello, %s!\}, name);soup_message_set_status(msg, SOUP_STATUS_OK);soup_message_body_append(msg-response_body, SOUP_MEMORY_COPY, response, strlen(response));g_free(response);soup_message_body_complete(msg-response_body); }int main(int argc, char *argv[]) {GMainLoop *loop g_main_loop_new(NULL, FALSE);SoupServer *server soup_server_new(SOUP_SERVER_SERVER_HEADER, example-server, NULL);// 添加处理器soup_server_add_handler(server, /static, handle_static_html, NULL, NULL);soup_server_add_handler(server, /dynamic, handle_dynamic_json, NULL, NULL);// 监听端口soup_server_listen_all(server, 8080, 0, NULL);g_print(Server running on http://localhost:8080\n);g_main_loop_run(loop);// 清理g_object_unref(server);g_main_loop_unref(loop);return 0; }编译和运行 确保安装了glib和libsoup库。使用以下命令编译代码gcc -o webserver webserver.c pkg-config --cflags --libs glib-2.0 libsoup-2.4运行生成的可执行文件./webserver这个示例展示了如何使用libsoup创建一个简单的Web服务器处理静态HTML文件和动态JSON请求并获取URL参数。你可以根据需要扩展和修改这个示例。 soup_message_body_append 函数 GitHub Copilot: 在libsoup中soup_message_body_append函数用于将数据添加到SoupMessageBody中。该函数的第二个参数是一个枚举类型用于指定如何处理传入的数据。这个枚举类型是SoupMemoryUse它定义了几种不同的内存管理策略。 SoupMemoryUse 枚举类型 以下是SoupMemoryUse枚举类型的几种常见值及其含义 SOUP_MEMORY_STATIC: 表示传入的数据是静态的不会被修改或释放。适用于常量字符串或全局变量。例子const char *static_data Hello, World!; soup_message_body_append(body, SOUP_MEMORY_STATIC, static_data, strlen(static_data));SOUP_MEMORY_TEMPORARY: 表示传入的数据是临时的libsoup会在内部复制一份。适用于临时变量或局部变量。例子char temp_data[] Temporary Data; soup_message_body_append(body, SOUP_MEMORY_TEMPORARY, temp_data, strlen(temp_data));SOUP_MEMORY_COPY: 表示传入的数据需要被复制libsoup会创建一份新的副本。适用于需要确保数据独立于原始数据的情况。例子char *dynamic_data g_strdup(Dynamic Data); soup_message_body_append(body, SOUP_MEMORY_COPY, dynamic_data, strlen(dynamic_data)); g_free(dynamic_data); // 原始数据可以安全释放SOUP_MEMORY_TAKE: 表示传入的数据的所有权将被libsoup接管libsoup负责释放内存。适用于动态分配的内存且不再需要手动管理内存释放。例子char *dynamic_data g_strdup(Dynamic Data); soup_message_body_append(body, SOUP_MEMORY_TAKE, dynamic_data, strlen(dynamic_data)); // 不需要手动释放 dynamic_datalibsoup 会负责示例代码 以下是一个使用SoupMemoryUse枚举类型的示例代码 #include libsoup/soup.h #include glib.hint main() {SoupMessageBody *body soup_message_body_new();// 使用 SOUP_MEMORY_STATICconst char *static_data Static Data;soup_message_body_append(body, SOUP_MEMORY_STATIC, static_data, strlen(static_data));// 使用 SOUP_MEMORY_TEMPORARYchar temp_data[] Temporary Data;soup_message_body_append(body, SOUP_MEMORY_TEMPORARY, temp_data, strlen(temp_data));// 使用 SOUP_MEMORY_COPYchar *dynamic_data_copy g_strdup(Dynamic Data Copy);soup_message_body_append(body, SOUP_MEMORY_COPY, dynamic_data_copy, strlen(dynamic_data_copy));g_free(dynamic_data_copy); // 原始数据可以安全释放// 使用 SOUP_MEMORY_TAKEchar *dynamic_data_take g_strdup(Dynamic Data Take);soup_message_body_append(body, SOUP_MEMORY_TAKE, dynamic_data_take, strlen(dynamic_data_take));// 不需要手动释放 dynamic_data_takelibsoup 会负责// 清理soup_message_body_free(body);return 0; }通过这些枚举值你可以灵活地管理传入数据的内存确保在不同场景下的内存安全和效率。
http://www.hkea.cn/news/14568306/

相关文章:

  • 网站不备案可以做淘宝联盟吗国栋建设网站
  • 做网站找哪家好百度网站上传
  • 网站平台建设规划想要做网站的企业
  • wordpress适合建什么网站吗东莞易宣网站建设公司怎么样
  • 网站做数据监测iis应用程序池与网站
  • 东莞市手机网站建设手机怎么建设网站
  • 枣强网站建设代理外资企业
  • 网站免费推广平台做网站方法
  • 律师做网络推广哪个网站好装修公司装修房子
  • 网站数据统计工具建筑产业大数据综合服务平台
  • 做网站布为网网站后台如何修改文字
  • 关于集团网站建设请示东莞网页制作价格
  • 如何编辑自己的网站郑州个人网站建设
  • 免费企业网站源码下载网站代码查询
  • 广告网站建设原创建筑工程类招聘网站
  • 网站域名备案信息查询淘宝是什么语言做的网站
  • 招标网站官网上海网站制作福州
  • 网站快速排名优化哪家好美食网站开发环境
  • 济南新网站建设如何用框架做网站
  • 网站营销单页怎么设计方案重庆移动网站制作
  • 微站是什么东西政协网站建设要求
  • 织梦网站栏目无法生成创造软件的软件下载
  • 免费行业报告网站在线ps照片处理手机版
  • ps做的网站保存不了jpg男女做暧网站
  • 佛山网站制作网页discuz手机版
  • 故城网站建设湖南互联网公司
  • wordpress初始化微信搜一搜seo优化
  • 企业网站的开发与应用甘肃网络科技有限公司
  • 做网站 (公司)大专学电子商务有用吗
  • 地图网站 源码济南做网站那家好