StreamSocketListener 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
TCP 스트림 소켓 또는 Bluetooth RFCOMM을 사용하여 들어오는 네트워크 연결을 수신 대기할 수 있습니다.
public ref class StreamSocketListener sealed : IClosable
/// [Windows.Foundation.Metadata.Activatable(65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class StreamSocketListener final : IClosable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
class StreamSocketListener final : IClosable
[Windows.Foundation.Metadata.Activatable(65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class StreamSocketListener : System.IDisposable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
public sealed class StreamSocketListener : System.IDisposable
function StreamSocketListener()
Public NotInheritable Class StreamSocketListener
Implements IDisposable
- 상속
- 특성
- 구현
Windows 요구 사항
디바이스 패밀리 |
Windows 10 (10.0.10240.0에서 도입되었습니다.)
|
API contract |
Windows.Foundation.UniversalApiContract (v1.0에서 도입되었습니다.)
|
앱 기능 |
bluetooth.rfcomm
ID_CAP_NETWORKING [Windows Phone]
internetClientServer
privateNetworkClientServer
|
설명
StreamSocketListener 클래스는 스트림 소켓을 사용하여 들어오는 네트워크 연결을 수신 대기하고 연결을 수락할 수 있습니다.
일반적인 작업 순서는 다음과 같습니다.
- StreamSocketListener를 만듭니다.
- Control 속성을 사용하여 StreamSocketListenerControl 개체를 검색하고 필요한 서비스의 소켓 품질을 설정합니다.
- ConnectionReceived 이벤트를 이벤트 처리기에 할당합니다.
- BindServiceNameAsync 또는 BindEndpointAsync 메서드를 호출하여 로컬 TCP 포트 번호 또는 서비스 이름에 바인딩합니다. Bluetooth RFCOMM의 경우 로컬 서비스 이름 매개 변수는 Bluetooth 서비스 ID입니다.
- 연결이 수신되면 StreamSocketListenerConnectionReceivedEventArgs 개체를 사용하여 StreamSocket 개체를 만든 Socket 속성을 검색합니다.
- StreamSocket 개체를 사용하여 데이터를 보내고 받습니다.
- Close 메서드를 호출하여 들어오는 네트워크 연결 수신 대기 및 수락을 중지하고 StreamSocketListener 개체와 연결된 관리되지 않는 모든 리소스를 해제합니다. 연결이 수신될 때 생성된 모든 StreamSocket 개체는 영향을 받지 않으며 필요에 따라 계속 사용할 수 있습니다.
SocketProtectionLevel 열거형을 사용하면 StreamSocketListener 개체를 사용하여 Bluetooth를 통해 소켓을 수신하고 바인딩할 때 서버가 클라이언트와의 프로토콜 협상을 제어할 수 있습니다. Bluetooth를 통해 StreamSocketListener 개체를 사용하는 경우 지원되는 SocketProtectionLevel 값은 PlainSocket, BluetoothEncryptionAllowNullAuthentication 또는 BluetoothEncryptionWithAuthentication입니다. StreamSocketListener 개체를 사용하여 Bluetooth를 사용하지 않는 소켓을 수신 대기하고 바인딩하는 경우 유일하게 지원되는 SocketProtectionLevel 값은 PlainSocket입니다.
Bluetooth에서 StreamSocketListener를 사용하려면 앱 매니페스트에서 bluetooth.rfcomm 디바이스 기능을 설정해야 합니다. 자세한 내용은 Bluetooth에 대한 디바이스 기능을 지정하는 방법을 참조하세요.
예외 처리
StreamSocketListener 클래스에서 비동기 메서드를 호출할 때 예외를 처리하는 코드를 작성해야 합니다. 매개 변수 유효성 검사 오류, 이름 확인 실패 및 네트워크 오류로 인해 예외가 발생할 수 있습니다. 네트워크 오류(예: 연결 손실, 연결 오류 및 서버 오류)의 예외는 언제든지 발생할 수 있습니다. 이러한 오류로 인해 예외가 발생합니다. 앱에서 처리하지 않으면 예외로 인해 런타임에 의해 전체 앱이 종료될 수 있습니다.
Windows.Networking.Sockets 네임스페이스에는 소켓을 사용할 때 오류 처리를 간소화하는 기능이 있습니다. SocketError 클래스의 GetStatus 메서드는 예외에서 SocketErrorStatus 열거형 값으로 HRESULT를 변환할 수 있습니다. 특정 네트워크 예외를 앱에서 다르게 처리하는 데 유용합니다. 또한 앱은 매개 변수 유효성 검사 오류에 대한 예외의 HRESULT 를 사용하여 예외를 발생시킨 오류에 대한 자세한 정보를 확인할 수 있습니다.
가능한 예외 및 예외를 처리하는 방법에 대한 자세한 내용은 네트워크 앱에서 예외 처리를 참조하세요.
Bluetooth에서 StreamSocketListener 사용
앱은 StreamSocketListener를 사용하여 Bluetooth RFCOMM을 통해 네트워크 연결을 수신 대기할 수 있습니다. Bluetooth를 통해 네트워크 연결은 BLUEtooth 서비스 ID를 IP 포트 또는 서비스 이름이 아닌 연결의 엔드포인트로 사용합니다. Bluetooth를 수신 대기하기 위해 앱은 LocalServiceName 매개 변수가 Bluetooth 서비스 ID로 설정된 StreamSocketListener의 BindServiceNameAsync 메서드 중 하나를 호출합니다.
Bluetooth에서 StreamSocketListener 및 StreamSocket 을 사용하려면 앱 매니페스트에서 bluetooth.rfcomm 디바이스 기능을 설정해야 합니다. 자세한 내용은 Windows.Devices.Bluetooth.Rfcomm 네임스페이스, Bluetooth에 대한 디바이스 기능을 지정하는 방법 및 Bluetooth Rfcomm 채팅 샘플을 참조하세요.
Windows Server 2012 StreamSocketListener 사용
Windows Server 2012 및 Windows Server 2012 R2에서 Media Foundation 기능을 사용하도록 설정하지 않으면 Windows.Networking.Sockets 네임스페이스에서 대부분의 클래스를 구현하는Windows.Networking.dll로드되지 않습니다. 따라서 Media Foundation 기능을 사용하지 않도록 설정하면 StreamSocketListener 및 Windows.Networking.Sockets 네임스페이스의 관련 소켓 클래스를 사용하는 앱이 실패합니다. 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에 대한 클래스가 예상대로 작동합니다.
생성자
StreamSocketListener() |
새 StreamSocketListener 개체를 만듭니다. |
속성
Control |
StreamSocketListener 개체의 소켓 제어 데이터를 가져옵니다. |
Information |
StreamSocketListener 개체에 대한 소켓 정보를 가져옵니다. |
메서드
이벤트
ConnectionReceived |
StreamSocketListener 개체에서 연결이 수신되었음을 나타내는 이벤트입니다. |
적용 대상
추가 정보
- IClosable
- SocketError
- SocketErrorStatus
- StreamSocket
- StreamSocketListenerConnectionReceivedEventArgs
- StreamSocketListenerControl
- StreamSocketListenerInformation
- 소켓으로 연결
- 네트워크 앱에서 예외 처리
- 스트림 소켓을 사용하여 연결하는 방법
- 스트림 소켓을 사용하여 연결하는 방법
- Bluetooth용 디바이스 기능을 지정하는 방법
- 고급 소켓 컨트롤을 사용하는 방법
- 네트워크 연결 문제 해결 및 디버그
- Bluetooth Rfcomm 채팅 샘플
- ControlChannelTrigger StreamSocket 샘플
- 근접 연결 샘플
- StreamSocket 샘플