소켓을 사용하여 연결(HTML)
[ 이 문서는 Windows 런타임 앱을 작성하는 Windows에서 8.x 및 Windows Phone 8.x 개발자를 대상으로 합니다. Windows 10용으로 개발하는 경우에는 최신 설명서를 참조하세요.]
Windows.Networking.Sockets 네임스페이스의 기능을 사용하는 Windows 스토어 앱에서 TCP 또는 UDP 소켓을 사용하여 데이터를 보내고 받습니다.
소켓은 네트워크 데이터를 보내고 받는 하위 수준 인터페이스를 제공합니다. 소켓과 함께 사용할 수 있는 기본 클래스는 다음과 같습니다.
- DatagramSocket - UDP 데이터그램 소켓을 사용하여 네트워크 통신을 지원하는 데 사용됩니다.
- StreamSocket - TCP 스트림 소켓을 사용하여 네트워크 통신을 지원하는 데 사용됩니다.
- StreamSocketListener - TCP 스트림 소켓을 사용하여 들어오는 네트워크 연결의 수신 대기를 지원하는 데 사용됩니다.
위에 나열된 기본 클래스에는 또한 이러한 클래스와 함께 사용되는 Windows.Networking.Sockets 네임스페이스에 여러 개의 관련 지원 클래스가 있습니다.
대상 개발자 그룹
Windows 런타임 앱에서 네트워크 통신에 소켓을 사용하도록 하는 데 관심이 있는 Javascript/C#/VB.NET/C++ 개발자가 사용하도록 디자인되었습니다. 이 기능에는 개발자가 다른 더 높은 계층의 네트워킹 프로토콜을 구현할 수 있도록 UDP 멀티캐스트를 비롯하여 TCP 및 UDP 소켓이 포함되어 있습니다. 앱은 TCP 및 UDP 소켓을 사용하여 클라이언트와 연결하고 연결을 수신 대기하고 서버로 작동하거나, 클라이언트 및 서버 작업 모두에 이 소켓을 사용할 수 있습니다.
앱의 요구 사항을 기반으로 하여 다음 프로토콜을 사용하는 것을 고려할 수 있습니다.
앱 요구 사항 | 사용 |
---|---|
다른 네트워킹 기능에서 직접 지원하지 않는 기존 프로토콜(예: SMTP, POP, IMAP 또는 메일의 경우 MAPI)을 사용하는 네트워크 서비스에 연결 |
TCP 또는 UDP 소켓 |
동일한 로컬 네트워크에 있는 다른 컴퓨터에 연결 |
TCP 또는 UDP 소켓 |
HTTP 프록시를 통해 통신할 수 있는 간단한 요청\응답 프로토콜 필요 |
C#, VB.NET 및 C++를 통해 사용할 수 있는 REST(Representational State Transfer) API |
HTTP 프록시 사용을 포함하여 웹을 통해 연결하기 위해 소켓과 같은 의미 체계(비동기, 양방향 전송) 필요 |
WebSocket |
소켓은 Windows.Networking.Sockets 및 Windows.Networking 네임스페이스의 클래스에서 지원합니다.
Windows 8에서는 또한 새로운 소켓 유형인 WebSocket을 사용합니다. 자세한 내용은 WebSocket을 사용하여 연결 연결과 MessageWebSocket 및 StreamWebSocket 클래스를 참조하세요.
이 섹션의 내용
항목 | 설명 |
---|---|
스트림 소켓을 사용하여 연결하는 방법 | TCP를 사용하는 스트림 소켓을 통해 네트워크 리소스에 연결하여 데이터를 보내고 받는 방법을 알아봅니다. |
데이터그램 소켓을 사용하여 연결하는 방법 | UDP를 사용하는 데이터그램 소켓을 통해 네트워크 리소스에 연결하여 데이터를 보내고 받는 방법을 알아봅니다. |
고급 소켓 컨트롤을 사용하는 방법 | DatagramSocket, StreamSocket 또는 StreamSocketListener를 사용할 때 고급 소켓 컨트롤을 사용하는 방법을 알아봅니다. |
TLS/SSL을 통해 소켓 연결의 보안을 유지하는 방법 | StreamSocket을 사용할 때 TLS/SSL을 통해 소켓 연결의 보안을 유지하는 방법을 알아봅니다. |
소켓 작업에 시간 제한을 설정하는 방법 | 네트워크 소켓 작업에 시간 제한을 설정하여 작업이 완료될 때까지 대기하는 시간을 제한하는 방법을 알아봅니다. |
네트워크 격리에 소켓 사용
개발자는 Windows 8.1, Windows Phone 8.1 및 Windows Server 2012 R2의 네트워크 격리 기능을 사용하여 Windows 런타임 앱의 네트워크 액세스를 제어하고 제한할 수 있습니다. 일부 앱은 네트워크에 대한 액세스 권한이 필요하지 않을 수 있습니다. 그러나 네트워크에 대한 액세스 권한이 필요한 앱의 경우 Windows 8.1 및 Windows Server 2012 R2는 적절한 접근 권한 값을 선택하여 사용할 수 있는 다양한 수준의 네트워크 액세스 권한을 제공합니다.
개발자는 네트워크 격리를 통해 각 앱에 대해 필요한 네트워크 액세스 범위를 정의할 수 있습니다. 적절한 범위가 정의되지 않은 앱은 지정된 유형의 네트워크와 특정 유형의 네트워크 요청(클라이언트가 시작한 아웃바운드 요청 또는 원치 않는 인바운드 요청과 클라이언트가 시작한 아웃바운드 요청 모두)에 액세스할 수 없습니다. 네트워크 격리를 설정하고 적용할 수 있게 되면 앱이 손상되었을 경우 명시적으로 액세스가 허용된 네트워크에만 액세스하도록 할 수 있습니다. 이 경우 다른 응용 프로그램 및 Windows에 영향을 미치는 범위가 현저히 줄어듭니다.
네트워크 격리는 Windows.Networking.Sockets 및 네트워크에 액세스하려고 하는 관련 네임스페이스의 모든 클래스 요소에 영향을 미칩니다. Windows에서는 적극적으로 네트워크 격리가 적용됩니다. 적절한 네트워크 접근 권한 값을 사용하지 않는 경우 결과적으로 네트워크에 액세스하게 되는 Windows.Networking.Sockets 네임스페이스의 클래스 요소 호출이 네트워크 격리로 인해 실패할 수 있습니다.
앱의 네트워크 접근 권한 값은 앱을 빌드할 때 앱 매니페스트에 구성됩니다. 네트워크 접근 권한 값은 일반적으로 앱을 개발할 때 Microsoft Visual Studio 2013을 사용하여 추가합니다. 텍스트 편집기를 사용하여 앱 매니페스트 파일에서 수동으로 네트워크 접근 권한 값을 설정할 수도 있습니다.
네트워크 격리에 대한 자세한 내용은 네트워크 격리 접근 권한 값을 구성하는 방법을 참조하세요.
관련 항목
다른 리소스
참조
Windows.Networking.Connectivity
샘플