[c언어] 네트워크 프로그래밍과 웹 개발의 통합

목차

소개

C언어는 네트워크 프로그래밍과 시스템 프로그래밍에서 널리 사용됩니다. 그러나 이제 C언어를 사용하여 웹 개발을 할 수 있습니다. 이 글에서는 C언어로 간단한 웹 서버를 작성하고, JSON 데이터를 생성하고 수신하는 방법을 알아봅니다.

네트워크 프로그래밍과 웹 개발

C언어를 이용하여 웹 개발을 하는 주요 이유 중 하나는 성능입니다. C언어는 빠르고 효율적으로 동작하기 때문에, 특히 서버 애플리케이션을 개발할 때 유용합니다. 또한, C언어로 작성된 코드는 어떤 환경에서도 동작할 수 있기 때문에 이식성이 뛰어나다는 장점을 가지고 있습니다.

웹 서버 작성하기

아래는 C언어를 사용하여 간단한 웹 서버를 작성하는 예제 코드입니다.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>

int main() {
    int server_fd, new_socket;
    struct sockaddr_in address;
    int addrlen = sizeof(address);
    char *hello = "HTTP/1.1 200 OK\nContent-Type: text/plain\nContent-Length: 12\n\nHello world!";

    if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) {
        perror("socket failed");
        exit(EXIT_FAILURE);
    }

    address.sin_family = AF_INET;
    address.sin_addr.s_addr = INADDR_ANY;
    address.sin_port = htons(8080);

    if (bind(server_fd, (struct sockaddr *)&address, sizeof(address)) < 0) {
        perror("bind failed");
        exit(EXIT_FAILURE);
    }
    if (listen(server_fd, 3) < 0) {
        perror("listen");
        exit(EXIT_FAILURE);
    }
    if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen)) < 0) {
        perror("accept");
        exit(EXIT_FAILURE);
    }
    write(new_socket, hello, strlen(hello));
    close(new_socket);
    close(server_fd);
    return 0;
}

위 코드는 소켓을 생성하고 HTTP 프로토콜에 따라 “Hello world!” 메시지를 전송하는 웹 서버를 구현한 예제입니다.

JSON 데이터 송수신

C언어에서 JSON 데이터를 생성하고 파싱하기 위해 cJSON 라이브러리를 사용할 수 있습니다. 아래 예제는 cJSON 라이브러리를 이용하여 JSON 데이터를 생성하는 예제입니다.

#include <stdio.h>
#include <stdlib.h>
#include "cJSON.h"

int main() {
    cJSON *root = cJSON_CreateObject();
    cJSON_AddItemToObject(root, "name", cJSON_CreateString("John Doe"));
    cJSON_AddItemToObject(root, "age", cJSON_CreateNumber(30));
    char *json_data = cJSON_Print(root);
    printf("%s\n", json_data);
    free(json_data);
    cJSON_Delete(root);
    return 0;
}

참고 자료