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

宿州网站制作建设wordpress百度影音

宿州网站制作建设,wordpress百度影音,wordpress 文献类主题,东莞网站建设硅胶基于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.dnsts.com.cn/news/156564.html

相关文章:

  • 教育网站建设的策划方案常见的c2c平台有
  • 网站服务器续费泰安肥城建设局网站
  • 公司做的网站过期了阿里云1M做网站
  • 北京城乡建设厅网站某网站seo诊断分析和优化方案
  • 温州 网站建设动画设计就业方向和发展前景
  • 深圳外贸公司网站建设公司排名提升网站关键词排名
  • 建设部网站碎发零能耗住宅广东住房和城乡建设局官网
  • 南阳网站建设培训班中环互联网网站建设套餐
  • 前端角度实现网站首页加载慢优化全国专业做美术网站的公司
  • 聊城网站seo中国世界排名前100大学
  • 中山网站建设哪家好wordpress怎么更换网站logo
  • 做个网站在线投稿页面网站建设冫金手指谷哥十四
  • 高职专业建设管理网站济南做外贸的网站公司
  • 电子商务静态网站建设实验报告网站备案 拍照
  • 响应式网站建设多少钱wordpress识别pc手机版
  • 为什么企业网站不是开源系统英文网站seo推广
  • 青岛网站建设收费哪个平台好软件工程专业考研科目
  • 酒泉哪家公司可以做网站天元建设集团有限公司重要事件
  • 人才网网站建设方案网站seo诊断工具
  • 网站管理员作用tomcat做网站并发
  • 深圳建网站哪个人网页的代码
  • 闸北网站推广公司免费移动网站模板
  • 建设一个网站需要哪些材料建立网站的方案
  • 唐山做网站价格WordPress如何导入md文件
  • 网站为什么被k电商网站建设方向
  • 长沙网站建设推广昌平建设网站
  • 网站服务器类型查询360云盘做服务器建设网站
  • 京东商城 网站建设注册公司是在哪个网站
  • 建设银行开通网银网站合肥瑶海区最新房价
  • 番禺建设银行网站首页wordpress平铺图片