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

用vue做网站制作网站的全过程

用vue做网站,制作网站的全过程,wordpress如何添加首页,日挣100元的微信小兼职基于GLib和libsoup的简单Web服务器示例,它可以处理静态HTML文件和动态JSON请求,并展示如何获取URL参数。 步骤: 初始化GLib和libsoup。创建一个处理静态HTML文件的处理器。创建一个处理动态JSON请求的处理器。获取URL参数并在JSON响应中返回…

基于GLib和libsoup的简单Web服务器示例,它可以处理静态HTML文件和动态JSON请求,并展示如何获取URL参数。

步骤:

  1. 初始化GLib和libsoup。
  2. 创建一个处理静态HTML文件的处理器。
  3. 创建一个处理动态JSON请求的处理器。
  4. 获取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;
}

编译和运行:

  1. 确保安装了gliblibsoup库。
  2. 使用以下命令编译代码:
    gcc -o webserver webserver.c `pkg-config --cflags --libs glib-2.0 libsoup-2.4`
    
  3. 运行生成的可执行文件:
    ./webserver
    

这个示例展示了如何使用libsoup创建一个简单的Web服务器,处理静态HTML文件和动态JSON请求,并获取URL参数。你可以根据需要扩展和修改这个示例。

soup_message_body_append 函数

GitHub Copilot: 在libsoup中,soup_message_body_append函数用于将数据添加到SoupMessageBody中。该函数的第二个参数是一个枚举类型,用于指定如何处理传入的数据。这个枚举类型是SoupMemoryUse,它定义了几种不同的内存管理策略。

SoupMemoryUse 枚举类型

以下是SoupMemoryUse枚举类型的几种常见值及其含义:

  1. SOUP_MEMORY_STATIC:

    • 表示传入的数据是静态的,不会被修改或释放。
    • 适用于常量字符串或全局变量。
    • 例子:
      const char *static_data = "Hello, World!";
      soup_message_body_append(body, SOUP_MEMORY_STATIC, static_data, strlen(static_data));
      
  2. SOUP_MEMORY_TEMPORARY:

    • 表示传入的数据是临时的,libsoup会在内部复制一份。
    • 适用于临时变量或局部变量。
    • 例子:
      char temp_data[] = "Temporary Data";
      soup_message_body_append(body, SOUP_MEMORY_TEMPORARY, temp_data, strlen(temp_data));
      
  3. 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); // 原始数据可以安全释放
      
  4. 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_data,libsoup 会负责
      

示例代码

以下是一个使用SoupMemoryUse枚举类型的示例代码:

#include <libsoup/soup.h>
#include <glib.h>int 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_take,libsoup 会负责// 清理soup_message_body_free(body);return 0;
}

通过这些枚举值,你可以灵活地管理传入数据的内存,确保在不同场景下的内存安全和效率。

http://www.fp688.cn/news/155932.html

相关文章:

  • 平台型网站如何推广爱站关键词挖掘
  • 为什么做网站要服务器 和域名今天国际新闻最新消息
  • 最专业的企业营销型网站建设价格长春网站制作系统
  • 十堰响应式网站建设衡阳有实力seo优化
  • 美食网站建设项目规划书优化服务平台
  • 响应式网站建设方案关键词排名优化
  • 手工活接单在家做有正规网站吗媒体营销
  • 大连建设招标网seo技术自学
  • 一个网站添加多个网址网络营销岗位有哪些
  • 高效网站建设公司网络小说网站三巨头
  • 石家庄微网站建设公司哪家好怎么创作自己的网站
  • 使用net域名的大网站互联网营销培训课程
  • 做保洁网站找谁做成都网站制作关键词推广排名
  • 设计网站公司力荐亿企邦哈尔滨关键词排名工具
  • jsp网站建设毕业设计蜘蛛搜索
  • 北京网站制作定制网络营销中的四种方法
  • 网站开发登录链接网站推广优化排名教程
  • 虚拟机建设网站百度开户需要什么条件
  • 可以做全景的网站百度推广seo优化
  • 便宜做网站价格青岛百度推广优化怎么做的
  • 网站开发公司盈利计算机编程培训学校哪家好
  • 资海网络一年做多少网站网站接广告平台
  • 免费学做美食视频网站杭州百度
  • c 网站开发项目提供seo顾问服务适合的对象是
  • 吴江高端网站建设可以全部免费观看的软件
  • 深圳做网站公司有哪些搜索引擎优化的方法和技巧
  • 做网站怎么接业务google免费入口
  • 减粘装置seo优化是利用规则提高排名
  • 凡科网登录电脑端aso优化技术
  • 辽宁建设工程质量监督站网站学计算机哪个培训机构好