Winsock 시작

이 섹션은 Windows 소켓 프로그래밍을 시작하기 위한 단계별 가이드입니다. 기본 Winsock 함수 및 데이터 구조와 함께 작동하는 방식을 이해하도록 설계되었습니다.

이 항목에서 설명에 사용하는 클라이언트 및 서버 애플리케이션은 매우 기본적인 클라이언트 및 서버입니다. 고급 코드 예제는 Microsoft Windows SDK(소프트웨어 개발 키트)에 포함된 샘플에 포함되어 있습니다.

처음 몇 단계는 클라이언트 및 서버 애플리케이션 모두에 대해 동일합니다.

다음 문서에서는 Winsock 클라이언트 애플리케이션을 만들기 위한 나머지 단계를 설명합니다.

다음 문서에서는 Winsock 서버 애플리케이션을 만들기 위한 나머지 단계를 설명합니다.

이러한 기본 예제에 대한 전체 소스 코드입니다.

고급 Winsock 샘플 앱

몇 가지 고급 Winsock 클라이언트 및 서버 샘플 앱 은 GitHub에서 사용할 수 있습니다. 더 높은 성능에서 낮은 성능까지 순서대로 여기에 나열되며 다음 디렉터리에서 찾을 수 있습니다.

  • iocp

    해당 폴더에는 I/O 완료 포트를 사용하는 세 가지 샘플 프로그램이 포함되어 있습니다. 프로그램에는 WSAAccept 함수를 사용하는 Winsock 서버, iocpserverAcceptEx 함수를 사용하는 Winsock 서버, iocpserverex이러한 서버 중 하나를 테스트하는 데 사용되는 간단한 다중 스레드 Winsock 클라이언트iocpclient가 포함됩니다.

    서버 프로그램은 TCP/IP를 사용하여 여러 클라이언트를 연결하고 서버가 클라이언트에 다시 에코하는 임의 크기의 데이터 버퍼를 전송하도록 지원합니다. 편의를 위해 간단한 클라이언트 프로그램인 iocpclient은 여러 스레드를 사용하여 데이터를 서버에 연결하고 지속적으로 전송하여 강조하도록 개발되었습니다. I/O 완성 포트를 사용하는 Winsock 서버는 최고 성능을 제공합니다.

  • 겹치는

    이 폴더에는 겹치는 I/O를 사용하는 샘플 서버 프로그램이 포함되어 있습니다. 샘플 프로그램은 AcceptEx 함수와 겹치는 I/O를 사용하여 클라이언트의 여러 비동기 연결 요청을 효과적으로 처리합니다. 서버는 AcceptEx 함수를 사용하여 단일 스레드 Win32 애플리케이션에서 서로 다른 클라이언트 연결을 멀티플렉싱합니다. 겹치는 I/O를 사용하면 확장성이 향상됩니다.

  • WSAPoll

    이 폴더에는 WSAPoll 함수의 사용을 보여 주는 기본 샘플 프로그램이 포함되어 있습니다. 결합된 클라이언트 및 서버 프로그램은 비차단이며 WSAPoll 함수를 사용하여 차단 없이 보내거나 받을 수 있는 시기를 결정합니다. 이 샘플은 설명용이며 고성능 서버가 아닙니다.

  • simple

    이 폴더에는 서버에서 여러 스레드를 사용하는 방법을 보여 주는 세 가지 기본 샘플 프로그램이 포함되어 있습니다. 이 프로그램에는 간단한 TCP/UDP 서버, simples여러 클라이언트 요청을 지원하기 위해 Win32 콘솔 애플리케이션의 select 함수를 사용하는 TCP 전용 서버simples_ioctl, 서버 테스트를 위한 클라이언트 TCP/UDP 프로그램 등이 simplec포함됩니다. 서버는 여러 스레드를 사용하여 여러 클라이언트 요청을 처리하는 방법을 보여 줍니다. 각 클라이언트 요청에 대해 별도의 스레드가 생성되므로 해당 메서드에 확장성 문제가 있습니다.

  • accept

    이 폴더에는 기본 샘플 서버 및 클라이언트 프로그램이 포함되어 있습니다. 서버는 select 함수를 사용하여 비차단 허용을 사용하거나 WSAAsyncSelect 함수를 사용하여 비동기 수락을 사용하는 방법을 보여 줍니다. 이 샘플은 설명용이며 고성능 서버가 아닙니다.