[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
를 통해 데이터베이스와 연동하여 데이터를 다룰 수 있습니다. 이를 통해 다양한 응용프로그램을 개발할 수 있습니다.
참고문헌:
- Beej’s Guide to Network Programming - http://beej.us/guide/bgnet/html/
- MySQL C API - https://dev.mysql.com/doc/c-api/en/