[c언어] 네트워크 프로그래밍과 데이터베이스 연동

이번에는 C언어를 사용하여 네트워크 프로그래밍과 데이터베이스를 연동하는 방법에 대해 알아보겠습니다. 네트워크 프로그래밍을 통해 클라이언트와 서버 간의 통신을 할 수 있고, 데이터베이스를 연동하여 데이터를 읽고 쓸 수 있습니다.

네트워크 프로그래밍

네트워크 프로그래밍을 위해서는 socket 라이브러리를 사용합니다. 클라이언트 측에서는 서버에 접속하고 데이터를 송수신할 수 있으며, 서버 측에서는 클라이언트의 연결을 받고 데이터를 처리할 수 있습니다.

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

int main() {
    int server_socket, client_socket;
    char buffer[1024];
    struct sockaddr_in server_addr, client_addr;

    server_socket = socket(AF_INET, SOCK_STREAM, 0);

    memset(&server_addr, '0', sizeof(server_addr));
    server_addr.sin_family = AF_INET;
    server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
    server_addr.sin_port = htons(8080);

    bind(server_socket, (struct sockaddr*)&server_addr, sizeof(server_addr));
    listen(server_socket, 10);

    client_socket = accept(server_socket, (struct sockaddr*)NULL, NULL);
    // 데이터 송수신, 연결 해제 작업 수행

    close(server_socket);
    return 0;
}

데이터베이스 연동

C언어로 데이터베이스를 연동하기 위해서는 libmysqlclient 라이브러리를 사용할 수 있습니다. 이를 통해 MySQL 데이터베이스와 연동하여 데이터를 읽고 쓸 수 있습니다.

#include <stdio.h>
#include <mysql/mysql.h>

int main() {
    MYSQL *conn;
    MYSQL_RES *res;
    MYSQL_ROW row;

    conn = mysql_init(NULL);

    if (mysql_real_connect(conn, "localhost", "user", "password", "database", 0, NULL, 0)) {
        // 데이터베이스 연결 성공 시 쿼리 실행 및 결과 처리
        mysql_query(conn, "SELECT * FROM table");
        res = mysql_store_result(conn);

        while ((row = mysql_fetch_row(res)) != NULL) {
            printf("%s %s\n", row[0], row[1]);
        }
        mysql_free_result(res);
    }
    mysql_close(conn);
    return 0;
}

결론

C언어를 사용하여 네트워크 프로그래밍과 데이터베이스를 연동하는 것은 다소 복잡할 수 있지만, socket 라이브러리를 통해 네트워크 통신을 하고 libmysqlclient를 통해 데이터베이스와 연동하여 데이터를 다룰 수 있습니다. 이를 통해 다양한 응용프로그램을 개발할 수 있습니다.

참고문헌: