목록전체 글 (420)
외로운 Nova의 작업실
안녕하세요. 오늘부터는 다중 접속 서버에 대해서 배워보겠습니다. 다중 접속서버란 이전에 해왔던 echo서버는 하나의 소켓(손님이 한명)에대해서만 요청을 받고 응답하는 프로그램을 짯습니다. 하지만 이번에는 여러개의 소켓(손님이 여러명)에대해서 요청을 받고 응답하는 프로그램을 짜보겠습니다. 여러개의 소켓을 다루는 방법에는 총 3가지 방법이있습니다. 각각마다 호출하는 함수와 내부적으로 동작하는 방식이 다릅니다. 아래는 그 3가지 종류입니다. 1. 멀티프로세서서 기반 서버 2. 멀티플렉싱 기반 서버 3. 멀티쓰레드 기반 서버 첫번째로, 멀티 프로세서에대해서 배워볼까했습니다. 하지만 멀티 프로세서의 기능은 리눅스 운영체제에서 가능한 기능입니다. 정확히말하면 윈도우에서 c언어 수준으로 구현된 함수나 헤더파일이 없다..
안녕하세요. 오늘은 소켓의 다양한 옵션들을 출력하고 설정해보는 것을 공부해볼까합니다. 소켓의 옵션에는 너무 많은 옵션들이있어서 자주 사용되는 옵션들만 보려고합니다. 먼저 아래는 옵션들을 얻어(get)오고 설정(set)하는 함수의 정의입니다. int getsockopt(SOCKET sock, int level, int opname, char* optval, int* optlen); //sock에 opname설정의 값을 optval주소값에 optlen만큼 넣는다 int setsockopt(SOCKET sock, int level, int opname, char* optval, int optlen); //sock에 opname의 설정값을 optval주소에 있는 optlen크기의 값으로 변경한다. 위의 정의에서..
안녕하세요. 오늘은 어제에 이어서 ip주소로 도메인이름을 출력해보도록 하겠습니다. 아래는 ip주소로 도메인이름 정보를 얻어오는 관련 함수입니다. //아래는 ip주소로 도메인 네임을 얻어오는 함수 int getnameinfo(SOCKADDR* pAddr, socklen_t addrLen, char* nodeBuffer, WORD nodeSize, char* serviceBuffer, WORD serviceSize, int flage) //pAddr 주소에 있는 정규화된 도메인이름을 nodeBuffer에 넣고 서비스이름을 serviceBuffer에 넣음 //ms에서는 nodeSize에는 NI_MAXHOST, serviceBuffer에는 NI_MAXSERV를 넣음 하지만 요즘에는 dns서버에게 ip를 주고 도..