소켓 모드란? 소켓은 함수(accept(), send(), recv(), sendto(), recvfrom()) 호출 시 동작 방식에 따라 블로킹(Blocking)과 넌블로킹(Nonblocking) 소켓으로 구분한다. 블로킹 소켓 소켓 함수 호출 시 조건이 만족되지 않으면 함수는 리턴하지 않고 해당 스레드는 대기 상태가 된다. 넌블로킹 소켓 소켓 함수 호출 시 조건이 만족되지 않더라도 함수가 리턴하므로 해당 스레드는 계속 진행 할 수 있다. // 블로킹 소켓 생성 SOCKET listenSocket = socket(AF_INET, SOCK_STREAM, 0); if(listenSocket == INVALID_SOCKET) err_quit("socket()"); // 넌블로킹 소켓으로 전환 unsigned..
소켓 옵션이란? 소켓 함수의 기본 동작을 변경할 수 있으며, 이를 이용하여 소켓과 프로토콜 구현 코드에 대한 좀 더 세부적인 제어를 할 수 있게 된다. 소켓 옵션을 설정하는 함수 int setsockopt( SOCK s, // 옵션을 적용할 소켓 int level, // 옵션을 해석하고 처리하는 코드를 나타내며, 옵션 레벨이라 부른다. 소켓코드(SOL_SOKET), IP 프로토콜 코드(IPPROTO_IP), TCP 프로토콜 코드(IPPROTO_TCP) int optname, // 옵션 이름 const char* optval, // 설정할 옵션 값을 담고 있는 버퍼의 주소 int optlen // optval이 가리키는 버퍼의 크기 ); 소켓 옵션을 얻어오는 함수 int getsockopt( SOCK s,..
소켓(Socket) 버클리 유닉스 에서 사용한 네트워크 프로그래밍 인터페이스, 이것을 윈도우에서 사용할 수 있도록 한 것을 윈도우 소켓(줄여서 윈속)이라 부름. 윈도우 95버전부터 API에 정식으로 포함하여 제공되었고, 현재는 WinSock2 버전까지 나옴. 윈속(Windows Socket, Winsock) DLL를 통해 기능이 제공됨(WS2_32.DLL) 윈도우의 메세지 구동방식으로 동작하므로, 이를 위한 확장 함수 존재 유닉스 소켓과 소스 코드 수준에서 호환성이 높으므로 기존 프로그램을 포팅하기 쉽다. OS별 윈속 버전은 다음과 같다. 윈도우 95 - 1.1 윈도우 98/Me, 윈도우 NT/2000/XP/2003 - 2.2 윈도우 CE - 1.1 #include "stdafx.h" #include /..