C語言是一種通用的高級編程語言,廣泛應用于各種領域和行業。在web開發中,可以使用C語言來編寫web服務器,以響應客戶端請求并提供數據傳輸。而JSON是一種輕量級數據交換格式,廣泛用于web數據傳輸,使用C語言編寫的web服務器可以將響應數據轉換為JSON格式,以便客戶端使用。
編寫C語言web服務器代碼時,需要使用HTTP協議處理客戶端請求和響應數據。可以使用第三方庫如libevent和libuv來簡化代碼編寫過程。以下是一個簡單的C語言web服務器代碼示例:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <event2/event.h> void http_generic_handler(struct evhttp_request *req, void *arg) { struct evbuffer *evb = evbuffer_new(); if (evb == NULL) { fprintf(stderr, "Failed to create response buffer.\n"); return; } const char *str = "Hello, world!"; evbuffer_add_printf(evb, "%s", str); evhttp_add_header(req->output_headers, "Content-Type", "text/plain"); evhttp_send_reply(req, HTTP_OK, "OK", evb); evbuffer_free(evb); } int main() { struct event_base *base; struct evhttp *http; base = event_base_new(); http = evhttp_new(base); evhttp_bind_socket(http, "127.0.0.1", 8080); evhttp_set_gencb(http, http_generic_handler, NULL); event_base_dispatch(base); evhttp_free(http); event_base_free(base); return 0; }
以上代碼實現了一個簡單的web服務器,響應客戶端請求時返回"Hello, world!"字符串。現在需要將響應數據轉換為JSON格式,以便客戶端能夠使用。可以使用第三方庫如cJSON來實現。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <event2/event.h> #include <cJSON.h> void http_json_handler(struct evhttp_request *req, void *arg) { struct evbuffer *evb = evbuffer_new(); if (evb == NULL) { fprintf(stderr, "Failed to create response buffer.\n"); return; } cJSON *root = cJSON_CreateObject(); cJSON_AddStringToObject(root, "message", "Hello, world!"); char *json_str = cJSON_Print(root); evbuffer_add_printf(evb, "%s", json_str); evhttp_add_header(req->output_headers, "Content-Type", "application/json"); evhttp_send_reply(req, HTTP_OK, "OK", evb); cJSON_Delete(root); free(json_str); evbuffer_free(evb); } int main() { struct event_base *base; struct evhttp *http; base = event_base_new(); http = evhttp_new(base); evhttp_bind_socket(http, "127.0.0.1", 8080); evhttp_set_cb(http, "/json", http_json_handler, NULL); event_base_dispatch(base); evhttp_free(http); event_base_free(base); return 0; }
以上代碼實現了一個返回JSON數據的web服務器,響應客戶端請求時返回{"message": "Hello, world!"}字符串。使用cJSON庫來創建JSON對象,并使用cJSON_Print函數將JSON對象轉換為字符串格式。然后將生成的JSON字符串添加到響應數據中,并設置HTTP響應頭Content-Type為application/json,以標識響應數據為JSON格式。
下一篇c 寫json