[c++] 소켓 통신을 통한 데이터 전송
이 기술 블로그에서는 C++을 사용하여 소켓을 생성하고 데이터를 전송하는 방법에 대해 알아보겠습니다. 소켓을 사용하면 네트워크 연결을 통해 데이터를 안전하고 신속하게 전송할 수 있습니다.
목차
소켓 프로그래밍이란?
소켓은 네트워크 상에서 데이터를 주고받기 위한 인터페이스를 제공하는 소프트웨어 모듈입니다. 소켓은 클라이언트와 서버 간의 통신을 가능하게 하며, TCP 또는 UDP와 같은 프로토콜을 사용하여 데이터를 안정적으로 전송합니다.
C++에서 소켓 생성하기
C++에서 소켓을 생성하려면 socket()
함수를 사용해야 합니다. 이 함수는 운영 체제의 네트워크 서브시스템과 연결하고 소켓 디스크립터를 생성합니다. 소켓을 생성한 후에는 bind()
, listen()
등의 함수를 사용하여 소켓을 구성할 수 있습니다.
데이터 전송하기
C++에서는 send()
함수를 사용하여 소켓을 통해 데이터를 전송할 수 있습니다. 이 함수는 소켓을 통해 데이터를 보내고 성공 여부를 확인하는 데 사용됩니다. 데이터를 전송하는 데 사용되는 다른 함수로는 sendto()
, write()
등이 있습니다.
소켓 통신 예제 코드
아래는 C++을 사용하여 소켓을 생성하고 데이터를 전송하는 간단한 예제 코드입니다.
#include <iostream>
#include <sys/socket.h>
#include <netinet/in.h>
#include <string.h>
int main() {
int server_fd, new_socket;
struct sockaddr_in address;
int opt = 1;
int addrlen = sizeof(address);
// 소켓 생성
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);
}
char *message = "Hello from server";
send(new_socket, message, strlen(message), 0);
return 0;
}
이제 C++을 사용하는 방법을 익혔으므로, 소켓 통신을 통해 안전하고 신속하게 데이터를 전송하고 받을 수 있을 것입니다.
결론
이 기술 블로그에서는 C++을 사용하여 소켓 통신을 통해 데이터를 전송하는 방법에 대해 알아보았습니다. 소켓을 생성하고 데이터를 전송하는 방법을 익힘으로써 네트워크 통신에 대한 이해를 높일 수 있습니다.
참고문헌
- https://www.geeksforgeeks.org/socket-programming-cc/
- https://www.tutorialspoint.com/unix_sockets/socket_server_example.htm