Windows.Networking.Sockets 네임스페이스
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
패키지된 Windows 앱(UWP 및 Windows 앱 SDK(WinUI 3) 데스크톱 앱 포함)에 대해 백그라운드에서 수신된 실시간 네트워크 알림에 대해 네트워크 통신 및 클래스에 사용할 소켓 및 WebSockets 클래스를 제공합니다.
클래스
| 속성 | Description |
|---|---|
| ControlChannelTrigger |
TCP 연결을 설정하고 들어오는 트래픽에 대한 알림을 받으려는 개체에 대해 백그라운드에서 실시간 알림을 받을 수 있도록 합니다. ControlChannelTrigger를 사용하기 전에 **BackgroundExecutionManager.RequestAccessAsync**를 호출합니다. |
| DatagramSocket |
UDP 데이터그램 소켓을 사용하여 네트워크 통신을 지원합니다. 코드 예제는 소켓을 참조하세요. |
| DatagramSocketControl |
DatagramSocket 개체에 소켓 제어 데이터를 제공합니다. |
| DatagramSocketInformation |
DatagramSocket 개체에 대한 소켓 정보를 제공합니다. |
| DatagramSocketMessageReceivedEventArgs |
DatagramSocket에서 MessageReceived 이벤트에 대한 데이터를 제공합니다. |
| MessageWebSocket |
WebSocket을 사용하여 전체 메시지를 읽고 쓸 수 있는 네트워크 통신을 지원합니다. |
| MessageWebSocketControl |
MessageWebSocket에 소켓 제어 데이터를 제공합니다. |
| MessageWebSocketInformation |
MessageWebSocket에 소켓 정보를 제공합니다. |
| MessageWebSocketMessageReceivedEventArgs |
MessageWebSocket에서 받은 메시지에 대한 데이터를 제공합니다. |
| ServerMessageWebSocket |
웹 서버가 소유한 WebSocket 개체를 사용하여 전체 메시지를 읽고 쓸 수 있는 네트워크 통신을 지원합니다. 임의의 WebSocket 연결을 등록할 수 없습니다. 대신 ServerMessageWebSocket의 인스턴스는 Windows WDP(디바이스 포털)와 같은 시스템 코드에 의해 만들어집니다. |
| ServerMessageWebSocketControl |
ServerMessageWebSocket에 소켓 제어 데이터를 제공합니다. |
| ServerMessageWebSocketInformation |
ServerMessageWebSocket에 소켓 정보를 제공합니다. |
| ServerStreamWebSocket |
웹 서버가 소유한 WebSocket 개체를 사용하여 스트림을 읽고 쓸 수 있는 네트워크 통신을 지원합니다. 임의의 WebSocket 연결을 등록할 수 없습니다. 대신 ServerStreamWebSocket의 인스턴스는 Windows WDP(디바이스 포털)와 같은 시스템 코드에 의해 만들어집니다. |
| ServerStreamWebSocketInformation |
ServerStreamWebSocket 개체에 대한 소켓 정보를 제공합니다. |
| SocketActivityContext |
앱과 소켓 조정 서비스 간에 소켓의 소유권을 전송하는 동안 소켓과 연결된 컨텍스트입니다. |
| SocketActivityInformation |
소켓 브로커에서 전송된 소켓에 대한 정보를 제공합니다. |
| SocketActivityTriggerDetails |
백그라운드 브로커 인프라에 의해 인스턴스화되고 SocketActivityTrigger 가 발생할 때 앱에서 세부 정보를 검색하는 데 사용하는 개체입니다. |
| SocketError |
DatagramSocket, StreamSocket 또는 StreamSocketListener 작업에 대한 소켓 오류 상태를 제공합니다. |
| StreamSocket |
UWP 앱에서 TCP 또는 Bluetooth RFCOMM을 통해 스트림 소켓을 사용하여 네트워크 통신을 지원합니다. |
| StreamSocketControl |
StreamSocket 개체에 소켓 제어 데이터를 제공합니다. |
| StreamSocketInformation |
StreamSocket 개체에 대한 소켓 정보를 제공합니다. |
| StreamSocketListener |
TCP 스트림 소켓 또는 Bluetooth RFCOMM을 사용하여 들어오는 네트워크 연결에 대한 수신 대기를 지원합니다. |
| StreamSocketListenerConnectionReceivedEventArgs |
StreamSocketListener 개체에서 ConnectionReceived 이벤트에 대한 데이터를 제공합니다. |
| StreamSocketListenerControl |
StreamSocketListener 개체에 소켓 제어 데이터를 제공합니다. |
| StreamSocketListenerInformation |
StreamSocketListener 개체에 대한 소켓 정보를 제공합니다. |
| StreamWebSocket |
WebSocket을 사용하여 스트림을 읽고 쓸 수 있는 네트워크 통신을 지원합니다. |
| StreamWebSocketControl |
StreamWebSocket 개체에 소켓 제어 데이터를 제공합니다. |
| StreamWebSocketInformation |
StreamWebSocket 개체에 대한 소켓 정보를 제공합니다. |
| WebSocketClosedEventArgs |
MessageWebSocket, StreamWebSocket 또는 IWebSocket 개체에서 닫 힌 이벤트에 대한 데이터를 제공합니다. |
| WebSocketError |
MessageWebSocket 또는 StreamWebSocket 개체에 소켓 오류 상태를 제공합니다. |
| WebSocketKeepAlive |
연결된 WebSocket에서 WebSocket 프로토콜 keep-alive를 보내는 기능을 제공합니다. |
| WebSocketServerCustomValidationRequestedEventArgs |
WebSocket에서 ServerCustomValidationRequested 이벤트에 대한 데이터를 제공합니다. 이 이벤트는 WebSocket에 대한 새로운 보안 연결이 수행될 때 발생하며, 연결이 설정되기 전에 코드에 서버 인증서의 사용자 지정 유효성 검사를 수행할 수 있는 기회를 제공합니다. |
구조체
| 속성 | Description |
|---|---|
| BandwidthStatistics |
StreamSocket, StreamWebSocket 또는 MessageWebSocket 개체를 사용하여 네트워크 데이터 전송에 대한 대역폭 정보를 나타냅니다. |
| RoundTripTimeStatistics |
StreamSocket 개체의 왕복 시간 정보를 나타냅니다. |
인터페이스
| 속성 | Description |
|---|---|
| IControlChannelTriggerEventDetails |
제어 채널 트리거를 구분하는 데 사용되는 백그라운드 브로커 인프라에 의해 인스턴스화된 개체입니다. |
| IControlChannelTriggerResetEventDetails |
ControlChannelTrigger가 다시 설정되었음을 나타내기 위해 ControlChannelReset 이벤트에 대한 백그라운드 브로커 인프라에 의해 인스턴스화된 개체입니다. |
| IWebSocket |
WebSocket을 사용하여 읽고 쓸 수 있는 네트워크 통신에 대한 액세스를 제공합니다. |
| IWebSocketControl |
IWebSocket 개체에 소켓 제어 데이터를 제공합니다. |
| IWebSocketControl2 |
IWebSocket 개체에 소켓 제어 데이터를 제공합니다. 이 인터페이스는 추가 속성을 사용하여 IWebSocketControl 인터페이스를 확장합니다. |
| IWebSocketInformation |
IWebSocket 개체에 대한 소켓 정보를 제공합니다. |
| IWebSocketInformation2 |
IWebSocket 개체에 대한 소켓 정보를 제공합니다. 이 인터페이스는 추가 속성을 사용하여 IWebSocketInformation 을 확장합니다. |
열거형
| 속성 | Description |
|---|---|
| ControlChannelTriggerResetReason |
ControlChannelTrigger가 다시 설정되는 이유입니다. |
| ControlChannelTriggerResourceType |
컨트롤 채널 트리거에서 사용하는 리소스 종류입니다. |
| ControlChannelTriggerStatus |
시스템에서 Windows 클래스 요소에서 사용할 ControlChannelTrigger 개체의 구성을 완료할 수 있는지를 지정합니다. Networking.Sockets 및 관련 네임스페이스. |
| MessageWebSocketReceiveMode |
클라이언트가 수락할 메시지의 종류를 설명합니다. |
| SocketActivityConnectedStandbyAction |
시스템이 연결된 대기로 넘어갈 때 소켓 조정 서비스를 사용하는 앱이 패킷을 받을 수 있는지 여부를 나타냅니다. |
| SocketActivityKind |
소켓 브로커에서 또는 소켓 브로커에서 전송되는 소켓 개체의 종류를 설명합니다. |
| SocketActivityTriggerReason |
SocketActivityTrigger가 발생한 이유입니다. |
| SocketErrorStatus |
소켓 작업의 상태 값을 지정합니다. |
| SocketMessageType |
MessageWebSocket 개체에 대한 메시지의 형식을 지정합니다. |
| SocketProtectionLevel |
StreamSocket 개체에 사용할 암호화 수준을 지정합니다. |
| SocketQualityOfService |
DatagramSocket 또는 StreamSocket 개체의 서비스 품질을 지정합니다. |
| SocketSslErrorSeverity |
SSL 연결에서 발생하는 오류의 범주입니다. |
설명
비고
앱 프레임워크 호환성: Windows. Networking.Sockets API는 UWP 앱뿐만 아니라 Windows 앱 SDK(WinUI 3) 데스크톱 앱 및 Win32 데스크톱 앱에서 사용할 수 있습니다. 패키지된 데스크톱 앱은 UWP 앱과 동일한 네트워크 기능 선언을 사용합니다. 패키지되지 않은 데스크톱 앱에는 무제한 네트워크 액세스 권한이 있으며 기능을 선언할 필요가 없습니다. 지침은 데스크톱 앱에서 Windows 런타임 API 호출을 참조하세요.
Windows. Networking.Sockets 네임스페이스는 소켓 및 WebSocket을 사용하는 네트워킹에 대한 클래스 및 인터페이스를 제공합니다. 기본 클래스는 다음과 같습니다.
- DatagramSocket. 네트워크 통신에 사용할 UDP 데이터그램 소켓입니다.
- StreamSocket. TCP 또는 RFCOMM을 사용하는 Bluetooth 연결을 통해 들어오거나 나가는 네트워크 통신에 사용할 스트림 소켓입니다.
- StreamSocketListener. 들어오는 TCP 네트워크 연결 또는 RFCOMM을 사용하는 들어오는 Bluetooth 연결을 수신 대기하는 스트림 소켓 수신기입니다.
- MessageWebSocket. 네트워크 통신을 위해 전체 메시지를 읽고 쓰는 메시지 기반 WebSocket입니다. WebSocket을 참조하세요.
- StreamWebSocket. 네트워크 통신을 위한 스트림을 읽고 쓰는 스트림 기반 WebSocket입니다. WebSocket을 참조하세요.
또한 이러한 기본 클래스에는 Windows 여러 관련 정보 및 컨트롤 클래스가 있습니다. Networking.Sockets 네임스페이스.
예외 처리
Windows 비동기 메서드를 호출할 때 예외를 처리하는 코드를 작성해야 합니다. Networking.Sockets 네임스페이스. 매개 변수 유효성 검사 오류, 이름 확인 오류 및 네트워크 오류로 인해 예외가 발생할 수 있습니다. 네트워크 오류(예: 연결 손실, 연결 실패 및 서버 오류)의 예외는 언제든지 발생할 수 있습니다. 이러한 오류로 인해 예외가 throw됩니다. 앱에서 처리하지 않으면 예외로 인해 전체 앱이 런타임에 의해 종료될 수 있습니다.
Windows. Networking.Sockets 네임스페이스에는 소켓 및 WebSocket을 사용할 때 오류를 처리하기 위한 편리한 도우미 메서드 및 열거형이 있습니다. 이는 앱에서 특정 네트워크 예외를 다르게 처리하는 데 유용할 수 있습니다. 또한 앱은 매개 변수 유효성 검사 오류에 대한 예외의 HRESULT 를 사용하여 예외를 발생시킨 오류에 대한 자세한 정보를 알아볼 수 있습니다.
가능한 예외 및 예외를 처리하는 방법에 대한 자세한 내용은 네트워크 앱에서 예외 처리를 참조하세요.
근접, Wi-Fi Direct 및 Bluetooth에서 StreamSocket 사용
앱은 가까운 범위 내에 있는 디바이스 간의 네트워크 연결에 StreamSocket 을 사용할 수 있습니다. Windows 클래스입니다. Networking.Proximity 네임스페이스는 StreamSocket을 사용하여 Bluetooth 또는 Wi-Fi Direct를 사용하는 주변 디바이스에 대한 네트워크 연결을 지원합니다. Windows PeerFinder 및 관련 클래스입니다 . Networking.Proximity 네임스페이스를 사용하면 앱이 가까운 디바이스에서 앱의 다른 인스턴스를 검색할 수 있습니다. PeerFinder.FindAllPeersAsync 메서드는 무선 범위 내에서 동일한 앱을 실행하는 피어 컴퓨터를 찾습니다. PeerFinder.ConnectAsync 메서드는 앱이 가까운 피어 앱으로 네트워크 데이터를 전송하는 데 사용할 수 있는 연결된 StreamSocket을 반환합니다. 자세한 내용은 근접성 지원 및 탭,Windows 참조하세요. Networking.Proximity, PeerFinder 및 근접 샘플입니다.
앱은 Windows 클래스와 함께 Wi-Fi Direct를 사용하는 디바이스 간의 네트워크 연결에 StreamSocket을 사용할 수도 있습니다. Devices.WiFiDirect 네임스페이스입니다. WiFiDirectDevice 클래스를 사용하여 Wi-Fi Direct(WFD) 지원 디바이스가 있는 다른 디바이스를 찾을 수 있습니다. WiFiDirectDevice.GetDeviceSelector 메서드는 근처의 WFD 디바이스에 대한 디바이스 식별자를 가져옵니다. 근처 WFD 디바이스에 대한 참조가 있으면 WiFiDirectDevice.GetConnectionEndpointPairs 메서드를 호출하여 EndpointPair 개체를 가져올 수 있습니다. StreamSocket 클래스의 ConnectAsync(EndpointPair) 또는 ConnectAsync(EndpointPair, SocketProtectionLevel) 메서드를 사용하여 소켓 연결을 설정할 수 있습니다. 자세한 내용은 Windows 참조하세요. Devices.WiFiDirect 및 WiFiDirectDevice.
Bluetooth는 Bluetooth 서비스 ID를 호스트 이름 또는 IP 주소가 아닌 StreamSocket 연결의 엔드포인트로 사용합니다. Bluetooth에서 StreamSocket 을 사용하려면 앱 매니페스트에서 bluetooth.rfcomm 디바이스 기능을 설정해야 합니다. 자세한 내용은 Windows 참조하세요. Devices.Bluetooth.Rfcomm 네임스페이스, Bluetooth에 대한 디바이스 기능을 지정하는 방법 및 Bluetooth Rfcomm 채팅 샘플.
Wi-Fi Direct에서 DatagramSocket 사용
앱은 Windows 클래스를 사용하여 Wi-Fi Direct를 사용하는 디바이스 간의 네트워크 데이터 전송에 DatagramSocket을 사용할 수 있습니다. Devices.WiFiDirect 네임스페이스입니다. WiFiDirectDevice 클래스를 사용하여 Wi-Fi Direct(WFD) 지원 디바이스가 있는 다른 디바이스를 찾을 수 있습니다. WiFiDirectDevice.GetDeviceSelector 메서드는 근처의 WFD 디바이스에 대한 디바이스 식별자를 가져옵니다. 근처 WFD 디바이스에 대한 참조가 있으면 WiFiDirectDevice.GetConnectionEndpointPairs 메서드를 호출하여 EndpointPair 개체를 가져올 수 있습니다. DatagramSocket 클래스의 메서드를 사용하여 EndpointPair 개체로 데이터를 보내고 받을 수 있습니다. 자세한 내용은 Windows 참조하세요. Devices.WiFiDirect 및 WiFiDirectDevice.
네트워크 트리거 사용
Windows. Networking.Sockets 네임스페이스는 앱이 백그라운드 네트워킹에 사용할 수 있는 두 가지 종류의 트리거인 ControlChannelTrigger 및 SocketActivityTrigger를 제공합니다.
제어 채널 트리거
ControlChannelTrigger를 사용하면 앱이 백그라운드에 있을 때 앱이 네트워크 데이터 패킷 및 네트워크 keepalives를 받을 수 있습니다. 이렇게 하면 앱이 Windows StreamSocket에 대한 실시간 상태 및 네트워크 알림을 제공할 수 있습니다. Networking.Sockets 네임스페이스 및 관련 네임스페이스의 기타 네트워크 클래스.
네트워크 트리거는 네트워크 및 시스템 리소스 사용을 최소화하기 위해 장기 실행 네트워크 앱(예: 이메일 앱)에서 사용됩니다. 네트워크 트리거를 사용하면 앱이 일정 기간 동안 저전력 모드로 떨어지도록 하여 네트워크 연결을 그대로 유지하지만 저전력 상태로 유지할 수 있습니다. 유지 간격을 설정하여 앱이 절전 모드를 해제해야 하는 시기를 시스템에 알릴 수 있습니다. 앱에 대한 패킷이 수신될 때 알림을 받도록 트리거를 설정할 수도 있습니다. 이러한 알림 기능은 모바일 디바이스에서 장기 실행 네트워크 앱을 사용할 때 배터리 수명을 연장하는 데 도움이 될 수 있습니다.
자세한 내용은 ControlChannelTrigger 클래스 및 백그라운드 연결 옵션을 설정하는 방법을 참조하세요.
소켓 활동 트리거
SocketActivityTrigger를 사용하면 앱이 활성 상태가 아니거나(일시 중단되거나 종료된 경우에도) 현재 메모리에 로드되지 않은 경우에도 네트워크 데이터 패킷을 받을 수 있습니다. 특히 네트워크 서비스를 제공하는 앱에 대해 제공되며, 여기서 앱은 DNS-SD를 통해 서비스 공급자로 등록한 다음 비활성 상태가 됩니다. SocketActivityTrigger는 클라이언트가 서비스에 연결될 때 앱에 알리므로 서비스가 활성화되고 요청된 서비스를 제공할 수 있습니다. SocketActivityTrigger 는 다른 상황에서도 사용할 수 있습니다. 수신된 네트워크 트래픽에 대한 응답으로 앱을 활성화하려는 경우 언제든지 사용합니다.
앱에서 소켓 활동 트리거를 사용하는 경우 앱 매니페스트에서 pushNotifications 기능을 지정해야 합니다.
네트워크 트리거 선택
두 종류의 트리거 중 하나가 적합한 몇 가지 시나리오가 있습니다. 앱에서 사용할 트리거 종류를 선택하는 경우 다음 조언을 고려하세요.
- IXMLHTTPRequest2, System.Net.Http.HttpClient 또는 System.Net.Http.HttpClientHandler를 사용하는 경우 ControlChannelTrigger를 사용해야 합니다.
- 푸시 사용 StreamSockets를 사용하는 경우 SocketActivityTrigger를 선호합니다. 연결이 적극적으로 사용되지 않을 때 시스템에서 메모리를 확보하고 전원 요구 사항을 줄일 수 있습니다.
- 네트워크 요청을 적극적으로 처리하지 않을 때 앱의 메모리 공간을 최소화하려면 SocketActivityTrigger를 사용하는 것이 좋습니다.
- 시스템이 연결된 대기 모드에 있는 동안 앱에서 데이터를 받을 수 있도록 하려면 SocketActivityTrigger를 사용합니다.
Windows Server 2012 소켓 및 WebSocket 사용
Windows Server 2012 및 Windows Server 2012 R2에서는 Windows 대부분의 클래스를 구현하는Windows.Networking.dll. Media Foundation 기능을 사용하도록 설정하지 않으면 Networking.Sockets 네임스페이스가 로드되지 않습니다. 결과적으로 Windows 소켓 또는 WebSockets 클래스를 사용하는 앱이 있습니다. Media Foundation 기능을 사용하지 않도록 설정하면 Networking.Sockets 네임스페이스가 실패합니다. Windows Server 2012 또는 Windows Server 2012 R2가 Media Foundation 기능을 사용하지 않도록 설정하여 설치됩니다.
서버 관리자 사용하거나 명령 프롬프트 또는 스크립트에 다음 텍스트를 입력하여 Windows Server 2012 또는 Windows Server 2012 R2에서 Media Foundation 기능을 사용하도록 설정할 수 있습니다.
dism /online /enable-feature /featurename:ServerMediaFoundation Media Foundation 기능을 사용하도록 설정하면 사용자에게 다시 시작하라는 메시지가 표시됩니다. 컴퓨터가 다시 시작되면 Windows 소켓 및 WebSocket에 대한 클래스입니다. Networking.Sockets 네임스페이스는 예상대로 작동합니다.
네트워크 격리와 함께 소켓 및 WebSocket 사용
Windows 네트워크 격리를 사용하면 패키지된 앱(UWP 및 패키지된 Windows 앱 SDK(WinUI 3) 데스크톱 앱 포함)의 보안 프로필을 완전히 제어할 수 있습니다.
네트워크 격리를 사용하면 적절한 기능을 선택하여 각 앱에 필요한 네트워크 액세스를 정의할 수 있습니다. 적절한 기능 집합이 없는 앱은 특정 네트워크 유형(인터넷 또는 홈/회사 네트워크) 및 특정 네트워크 요청(아웃바운드 클라이언트 시작 요청 또는 인바운드 원치 않는 요청 및 아웃바운드 클라이언트 시작 요청 모두)을 사용할 수 없습니다. 네트워크 격리를 적용하는 기능은 앱이 손상되더라도 앱이 기능으로 부여된 기능(예: 네트워크 유형 및 네트워크 요청)만 사용할 수 있도록 합니다. 이렇게 하면 다른 앱 및 운영 체제에 미치는 영향을 크게 줄일 수 있습니다.
Windows 네트워크 격리를 적극적으로 적용합니다. 메서드에 대한 호출 또는 Windows 속성에 대한 액세스입니다. 적절한 네트워크 기능을 사용하도록 설정하지 않은 경우 Networking.Sockets 네임스페이스(또는 네트워크 액세스가 필요한 관련 네임스페이스)가 실패할 수 있습니다.
앱의 네트워크 기능은 앱이 빌드되면 앱 매니페스트에서 구성됩니다. 네트워크 기능은 일반적으로 앱을 개발할 때 Visual Studio 사용하여 추가됩니다. 텍스트 편집기를 사용하여 앱 매니페스트 파일에서 수동으로 설정할 수도 있습니다. 패키지되지 않은 데스크톱 앱은 네트워크 격리의 대상이 아니며 네트워크 기능을 선언할 필요가 없습니다.
네트워크 격리에 대한 자세한 내용은 네트워크 격리 기능을 구성하는 방법을 참조하세요.
참고 항목
- PeerFinder
- WiFiDirectDevice
- Windows.Devices.Bluetooth.Rfcomm
- Windows.Devices.WiFiDirect
- Windows.Networking
- Windows.Networking.Connectivity
- Windows.Networking.Proximity
- 네트워킹에 대한 지원 추가
- 소켓을 사용하여 연결
- WebSockets
- 네트워크 앱에서 예외 처리
- 네트워크 격리 기능을 구성하는 방법
- 백그라운드 연결 옵션을 설정하는 방법
- Bluetooth에 대한 디바이스 기능을 지정하는 방법
- 근접 및 탭 지원
- 네트워크 연결 문제 해결 및 디버깅
- SetSocketMediaStreamingMode
- Bluetooth Rfcomm 채팅 샘플
- DatagramSocket 샘플
- ControlChannelTrigger StreamWebSocket 샘플
- ControlChannelTrigger TCP 소켓 샘플
- 근접 샘플
- StreamSocket 샘플
- DatagramSocket 샘플
- WebSocket 샘플
- StreamSocket 샘플
- Wi-Fi 직접 샘플
- Wi-Fi 직접 서비스 샘플(Windows 10)
- 소켓 활동 트리거 스트림 소켓 샘플