소켓프로그래밍 4

소켓 입출력 모델 비교

소켓 입출력 모델장점 단점 Select 모델모든 윈도우 버전은 물론 유닉스에서도 사용할 수 있으므로 이식성(특히 하위 호환성)이 높다. 하위 호환성을 위해 존재하며, 성능은 여섯 가지 모델 중 가장 떨어진다.64개 이상의 소켓을 처리하려면 여러개의 스레드를 사용해야 한다. WSAAsyncSelect 모델 소켓 이벤트를 윈도우 메시지 형태로 처리하므로, GUI 애플리케이션과 잘 결합 할 수 있다. 하나의 윈도우 프로시저에서 일반 윈도우 메시지와 소켓 메시지를 처리해야 하므로 성능저하의 요인이 된다. WSAEventSelect 모델Select 모델과 WSAAsyncSelect 모델의 특성을 혼합한 형태로, 비교적 뛰어난 성능을 제공하면서 윈도우를 필요로 하지 않는다. 64개 이상의 소켓을 처리하려면 여러 개..

카테고리 없음 2017.07.22

소켓 입출력 모델, 블로킹/넌블로킹 소켓

소켓 입출력 모델 다수의 소켓을 관리하고 소켓에 대한 입출력을 처리하는 일관된 방식을 뜻함.시스템 자원을 적게 사용하면서도 다수의 클라이언트를 효율적으로 처리하는 서버를 만들 수 있다. * 블로킹 소켓 vs 넌블로킹 소켓 1. 블로킹 소켓블로킹 소켓은 소켓 함수 호출 시 조건이 만족되지 않으면 함수가 리턴하지 않고 스레드 실행이 정지된다.조건이 만족되면 소켓 함수가 리턴하면서 정지된 스레드가 깨어나 실행을 재개한다.※ 주요 소켓 함수의 리턴 조건accept() - 접속한 클라이언트가 있을 때connect() - 서버에 접속을 성공했을 때send(), sendto() - 응용 프로그램이 전송을 요청한 데이터를 소켓 송신 버퍼에 모두 복사했을 때recv(), recvfrom() - 소켓 수신 버퍼에 도착한 ..

카테고리 없음 2017.07.22

소켓 옵션, Nagle 알고리즘

소켓 옵션 의미 소켓 옵션을 사용하면 소켓 함수의 기본 동작을 변경할 수 있으며, 이를 통해 소켓코드와 프로토콜 구현 코드를 세부적으로 제어 가능. 소켓 옵션은 처리 주체에 따라 크게 두 종류로 구분 1. 소켓 코드가 처리하는 옵션 (setsockopt() 두번째 옵션 - SOL_SOCKET)옵션을 설정하면 소켓 코드에서 해석하고, 처리한다. 2. 프로토콜 구현 코드가 처리하는 옵션 (setsockopt() 두번째 옵션 - IPPROTO_IP, IPPROTO_TCP)옵션을 설정하면 프로토콜 구현 코드에서 해석하고 처리한다. 프로토콜 의존적인 성격이 있으므로 프로토콜 종류에 따라 옵션 자체가 달라진다. 소켓 옵션 - SO_REUSEADDR 옵션 현재 사용 중인 IP주소와 포트번호를 재사용할 수 있다.다시 ..

카테고리 없음 2017.07.22

소켓 프로그래밍을 전화기에 비유하여 이해하기

전화기 장만소켓생성socket 함수호출번호 부여IP 주소와 Port 번호 할당bind 함수호출전화선 연결연결 요청 가능상태로 변경listen 함수호출수화기 들기연결 요청에 대한 수락 accept 함수호출전화 걸기소켓 연결 요청(클라이언트 -> 서버)connect 함수호출 TCP 윈속 코드 기본 구조 서버윈속 초기화socket() - 접속용 소켓 생성bind() - 소켓주소구조체와 소켓을 바인딩listen() - 리스닝 상태로 accept() - 클라이언트와 통신할 소켓 생성 (UDP는 없음. 비연결형 프로토콜이라서) recv() - 데이터 받기 send() - 데이터 보내기 closesocket() - 통신 소켓 닫기closesocket() - 접속용 소켓 닫기윈속 종료 클라이언트윈속 초기화socket(..

카테고리 없음 2017.07.22