SOCKET 4

소켓 옵션 정리

getsockopt & setsockopt 함수 이름에서부터 알 수 있듯이 socket의 옵션정보들을 얻거나 바꿀 수 있는 함수들이다. #include int getsocket(SOCKET sock, int level, int optname, char* optval, int* optlen) // 성공 시 0, 실패 시 SOCKET_ERROR 반환 sock : 옵션 정보를 얻을 소켓 level : 확인할 옵션의 프로토콜 레벨(ex. SOL_SOCKET, IPPROTO_IP, IPPROTO_TCP) optname : 확인할 옵션의 이름(ex. SO_RCVBUF, SO_SNDBUF, SO_TYPE 등) optval : 확인 결과 저장을 위한 버퍼의 주소값 optlen : optval이 가리키고 있는 타입의 크..

공부/Server 2021.08.01

TCP/UDP에 대한 이해

인터넷 프로토콜 기반 소켓의 경우 데이터 전송 방법에 따라 TCP(Transmission Control Protocol)/UDP(User Datagram Protocol)로 나뉜다. TCP/UDP는 TCP/IP 프로토콜 스택에 속해 있다. TCP/IP 프로토콜 스택은 4개의 계층으로 나뉘어 있는데 이를 통해 데이터 송수신 과정을 4개의 영역으로 나누어 구현했다는 것을 알 수 있다. 만약 TCP소켓을 생성해서 데이터를 송수신한다면 아래 그림에 있는 4개의 계층을 통해서 이루어 질 것이다. UDP소켓을 생성해서 데이터를 송수신한다면 아래 그림에 있는 계층들을 통할 것이다. 각 계층에 대해 먼저 알아보자. LINK 계층 LINK 계층은 물리적인 영역의 표준화에 대한 결과이다. LAN, WAN과 같은 네트워크 ..

공부/Server 2021.08.01

윈도우 기반 소켓 프로그래밍 필수 함수

// 성공 시 소켓 핸들, 실패시 INVALID_SOCKET 반환 #include SOCKET socket(int af, int type, int protocol) af : 프로토콜 체계 type : 소켓 타입 protocol : 호스트간 통신에 사용되는 프로토콜 // IP주소와 PORT번호 할당 // 성공 시 0, 실패 시 SOCKET_ERROR 반환 #include int bind(SOCKET s, const struct sockaddr* name, int namelen) s : socket함수로부터 할당 받은 소켓 핸들 name : IP주소, PORT번호를 할당한 sockaddr구조체 포인터. 보통 SOCKADDR_IN타입의 구조체에 IP주소와 PORT번호를 할당하고 SOCKADDR*로 형변환해서 ..

공부/Server 2021.07.31

윈도우 기반 소켓 프로그래밍 시작하기(socket, protocol 개념 및 기본적인 함수 정리)

소켓이란? 물리적으로 연결되어 있는 호스트간 데이터 송수신을 가능하게 하는 매개체. Server측에서 필요한 함수들 WSAStartup(프로그램에서 요구하는 소켓 버전을 알리고, 해당 버전의 라이브러리 초기화) -> socket(socket 생성) -> bind(socket 주소 정보 할당) -> listen(socket을 연결 요청 받을 수 있는 상태로 만듬) -> accept(연결, 클라이언트로 부터 연결 요청이 있을 때 까지 대기) -> send(연결 요청이 있는 클라이언트에게 메세지를 보냄) -> closesocket(만약 연결을 종료할 것이라면 서버와 클라이언트 소켓을 닫는다) -> WSACleanup(윈속 라이브러리를 운영체제에 반환함으로써, 윈속 관련 함수 호출 불가) - listen 인자중..

공부/Server 2021.07.27