Windows Socket API(WinSock) 에서 사용하는 구조체 입니다.
WSAStartup 함수를 호출할 때 이 구조체를 사용하여
WinSock 라이브러리의 버전과 관련된 정보를 받아옵니다.
사용할 준비
소켓은 네트워크 프로그래밍에서의 기본 개념으로,
프로세스 간의 네트워크 통신을 위한 인터페이스를 제공하는 것을 말합니다.
소켓을 통해 프로세스 간에 데이터를 주고 받거나, 상호통신을 구현할 수 있습니다.
설명자
컴퓨터 운영체제에서 파일, 프로세스, 소켓등의
자원을 관리 및 추적 하는데 사용되는
이를 구분하고, 자원을 참조하는 과정에서 디스크립터를 사용한다.
예를들어, 파일 입출력을 할 때 파일을 열면
마찬가지로, 소켓 통신을 할 때 소켓을 생성하면,
소켓 설명자는 소켓에 대한 저수준 핸들이며
운영체제의 네트워크 스택 내에서 소켓을 식별하는데 사용됩니다.
새 소켓이 생성되면 운영체제의 소켓에 네트워크 작업을 수행하는 데
소켓을 참조하는데 사용됩니다.
이 정수는 새 소켓이 생성이 될때 소켓시스템 호출에 의해 반환되며,
bind, listen, accept, send 및 recv 와 같은 후속 시스템 호출에서,
소켓의 상태, 주소패밀리, 소켓 유형, 프로토콜 및 기타정보를 포함하여
정리하자면
socket( ); bind( ); listen( ); accept( ) -> return SOCKET clientSocket
의 과정을 진행하여,
클라이언트가 연결할때까지 기다렸다가.
socket( ); connect( ); 과정을 거쳐
특정 주소를 가진 서버에 연결하고,
SOCKET 구조체는 Windows 플랫폼에서 사용되는 소켓 타입입니다.
SOCKET 구조체는 소켓을 생성하고 , 연결하고, 데이터 전송/수신 을 수행하는데 필요한
SOCKET 구조체는 실제로
Winsock API 에서는 SOCKET 타입으로 정의되어 있습니다.
listen 상태의 소켓은 listen 함수에서 반환된 SOCKET 구조체를 통해서 표현할 수 있습니다.
연결상태의 소켓은 accept 함수에서 반환된 SOCKET 구조체를 통해서 표현할 수 있습니다.
IP 주소는 4개의 8비트 값으로 구성되어 있어서,
이를 단일 32 비트 정수로 표현하는 것이 효율적입니다.
in_addr_t 는
IP 주소는 네트워크 바이트 순서로 표현되며
호스트 바이트 순서로 표현하려면 htonl( ) 함수 또는 ntohl( ) 함수를 사용할 수 있습니다.
TCP 서버 소켓의 IP 주소와 포트 번호를 지정하는 함수
bind 함수는
이코드는 INADDR_ANY 라는 상수를 통해 어떤 IP 주소라도 수용할 수있는 상태로 설정하며,
주어진 socket 에 대해 listen queue (연결 요청 대기 큐) 를 생성합니다.
listen 함수 호출 후에
이
파라미터 NULL 은 새로운 클라이언트의 주소 정보를 받지 않기 위해서 사용되었습니다.
accept 함수는 성공시 연결된 클라이언트 소켓의 핸들을 반환하며,
함수는
함수 호출이 대기 상태로 유지 됩니다.
데이터를 수신하는 함수