socket(네트워크 주소 체계, 소켓 타입, 프로토콜)
- 소켓을 생성하는 함수
- 이 함수는 '네트워크 주소 체계', '소켓 타입', '프로토콜'로 초기화할 수 있음
- 소켓 생성에 실패하는 경우 -1을 반환함
- 네트워크 주소 체계 : IPv4(AF_INET), IPv6(AF_INET6)
- 소켓 타입 : TCP(SOCK_STREAM), UDP(SOCK_DGRAM)
- 프로토콜 : TCP(IPPROPTO_TCP), UDP(IPPOTO_UDP)
bind(소켓 변수, 서버 주소 구조체, 서버 주소 구조체의 크기)
- 서버 측의 소켓에 IP와 포트 번호를 할당하여 네트워크 인터페이스와 묶일 수 있도록 함
- IPv4 소켓 주소 구조체(SOCKADDR_IN) : 소켓 주소체계(sin_family), 포트(sin_port), IPv4 주소(sin_addr)
- 실제로 소켓 주소 구조체를 이용할 때는 IPv4 소켓 주소 구조체를 일반 소켓 구조체로 변환하여 사용해야 함
listen(소켓 변수, 백 로그 큐의 크기)
- 클라이언트로부터 연결 요청을 기다림
- 백 로그란 동시에 연결을 시도하는 최대 클라이언트 수를 의미
connect(소캣 변수, 서버 주소 구조체, 서버 주소 구조체 크기)
- 클라이언트 측에서 서버에 연결을 요청함
- 소켓 생성에 실패하는 경우 -1을 반환
- IPv4 소켓 주소 구조체 : 소켓 주소체계(sin_family), 포트 번호(sin_port), IPv4 주소(sin_addr)
- 실제로 소켓 주소 구조체를 이용할 때는 IPv4 소켓 주소 구조체를 일반 소켓 구조체로 변환하여 사용해야 함
accept(소켓 변수, 클라이언트 주소 구조체 변수, 클라이언트 주소 구조체 크기)
- 서버 측에서 클라이언트의 연결을 수락
- accept() 함수 내부에서 클라이언트 주소를 설정한 뒤에 통신에 사용할 클라이언트의 소켓을 반환함
- 오류가 발생하는 경우 -1을 반환
- 실제로 소켓 주소 구조체를 이용할 때는 IPv4 소켓 주소 구조체를 일반 소켓 구조체로 변환하여 사용해야 함
send(소켓 변수, 문자열 버퍼, 문자열 버퍼 크기, 플래그)
- 상대방에게 데이터를 보냄
- 특정한 소켓으로 문자열 버퍼에 담긴 내용을 전송
- 플래그는 특별한 경우가 아니라면 0을 설정함
- 데이터 전송에 실패하는 경우 -1을 반환
recv(소켓 변수, 문자열 버퍼, 문자열 버퍼 크기, 플래그)
- 데이터를 수신하여 특정 문자열 버퍼를 담음
- 플래그는 특별한 경우가 아니라면 0을 성정
- 데이터 수신에 실패하는 경우 -1을 반환
closesocket(소켓 변수)
- 열린 소켓을 닫음
Winsock2
- Windows Socket API의 준말로 네트워크 프로그래밍을 위한 라이브러리
- Winsock을 사용하기 위해서는 ws2_32.dll 파일을 사용 설정해야 하며 WSAStartup() 함수 등을 통해 환경 설정을 진행해야 함
- Winsock2는 윈도우를 위한 소켓 프로그래밍 라이브러리이므로 리눅스 프로그램에서는 사용할 필요가 없음
WSAStartup(윈속 버전, WSA데이터 변수)
- 사용할 Winsock의 버전을 설정
- 관련 설정 정보를 받기 위해 WSADATA 변수를 함께 넣어줌
WSACleanup()
- Winsock을 더 이상 사용하지 않음을 설정
'C++' 카테고리의 다른 글
is a / has a (0) | 2021.01.11 |
---|---|
C++ 문제 풀이 (0) | 2021.01.11 |
소켓 프로그래밍의 개요 (0) | 2020.12.17 |
예외 처리 (0) | 2020.12.16 |
STL 연관 컨테이너 (0) | 2020.12.16 |