본문 바로가기
반응형
[C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 26: C++로 네트워크 프로그래밍 (소켓 프로그래밍) 소켓 프로그래밍 소개소켓 프로그래밍은 네트워크를 통해 통신하는 소프트웨어를 작성하는 기술입니다. C++에서는 Berkeley 소켓 API를 사용하여 소켓 프로그래밍을 구현할 수 있습니다. 오늘은 TCP/IP 소켓을 사용하여 간단한 클라이언트-서버 애플리케이션을 구현해보겠습니다. TCP 서버 구현1. 서버 소켓 설정TCP 서버는 클라이언트 연결을 수락하고 데이터를 주고받습니다. 서버는 다음 단계를 통해 구현됩니다.소켓 생성소켓 바인딩소켓 리스닝클라이언트 연결 수락데이터 송수신tcp_server.cpp#include #include #include #include #include #define PORT 8080int main() { int server_fd, new_socket; struct so.. 2024. 8. 1.
[C++ 네트워크 프로그래밍] Day 3: 소켓 프로그래밍 기초 (UDP) UDP 소켓 프로그래밍UDP(User Datagram Protocol)는 비연결형 프로토콜로, 신뢰성보다는 빠른 데이터 전송을 목적으로 합니다. UDP는 데이터의 순서나 무결성을 보장하지 않기 때문에, 주로 실시간 스트리밍, 게임 네트워크, 간단한 요청-응답 등의 용도로 사용됩니다. UDP 소켓 프로그래밍의 주요 함수소켓 생성socket() 함수: 소켓을 생성합니다.domain: 주소 체계 (예: AF_INET - IPv4)type: 소켓 타입 (예: SOCK_DGRAM - UDP)protocol: 프로토콜 (일반적으로 0으로 설정)int socket(int domain, int type, int protocol);서버 측 소켓 프로그래밍bind() 함수: 소켓에 IP 주소와 포트 번호를 바인딩합니다.i.. 2024. 8. 1.
[C++ 네트워크 프로그래밍] Day 4: 비동기 소켓 프로그래밍 비동기 소켓 프로그래밍비동기 소켓 프로그래밍은 네트워크 통신에서 비동기 I/O를 사용하여 동시성을 높이고, CPU의 유휴 시간을 줄이는 방법입니다. 비동기 프로그래밍을 통해 소켓의 I/O 작업을 비동기적으로 처리할 수 있습니다. 이를 통해 하나의 스레드가 여러 I/O 작업을 처리할 수 있습니다.비동기 소켓 프로그래밍의 주요 개념블로킹과 논블로킹 I/O블로킹 I/O: 함수 호출이 완료될 때까지 호출한 스레드가 대기 상태에 있습니다. 예를 들어, recv() 함수는 데이터가 수신될 때까지 블로킹됩니다.논블로킹 I/O: 함수 호출이 즉시 반환되며, 호출한 스레드는 다른 작업을 계속 수행할 수 있습니다. 데이터가 준비되지 않은 경우, 에러를 반환합니다.비동기 I/O비동기 I/O: I/O 작업을 비동기적으로 처리.. 2024. 8. 1.
[C++ 네트워크 프로그래밍] Day 2: 소켓 프로그래밍 기초 (TCP) 소켓 프로그래밍 기초소켓 프로그래밍은 네트워크 통신을 위해 소켓을 사용하는 프로그래밍 기법입니다. 소켓은 네트워크 통신의 끝점을 나타내는 추상화된 개념으로, IP 주소와 포트 번호로 식별됩니다. TCP 소켓 프로그래밍TCP(Transmission Control Protocol)는 신뢰성 있는 데이터 전송을 보장하는 프로토콜입니다. 연결 지향적이며, 데이터의 순서와 무결성을 보장합니다. TCP 소켓 프로그래밍에서는 클라이언트와 서버 간의 연결을 설정하고, 데이터를 주고받는 과정을 구현합니다. TCP 소켓 프로그래밍의 주요 함수소켓 생성socket() 함수: 소켓을 생성합니다.domain: 주소 체계 (예: AF_INET - IPv4)type: 소켓 타입 (예: SOCK_STREAM - TCP)protoco.. 2024. 8. 1.
반응형