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