[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;
}