다음을 통해 공유


StreamSocketListener 클래스

정의

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
상속
Object Platform::Object IInspectable StreamSocketListener
특성
구현

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 개체에 대한 소켓 정보를 가져옵니다.

메서드

BindEndpointAsync(HostName, String)

StreamSocketListener에서 로컬 호스트 이름 및 로컬 서비스 이름에 대한 바인딩 작업을 시작합니다.

BindServiceNameAsync(String)

StreamSocketListener에서 로컬 서비스 이름에 대한 바인딩 작업을 시작합니다.

BindServiceNameAsync(String, SocketProtectionLevel)

StreamSocketListener에서 바인딩된 소켓에 설정할 지정된 SocketProtectionLevel을 사용하여 로컬 서비스 이름에 바인딩 작업을 시작합니다.

BindServiceNameAsync(String, SocketProtectionLevel, NetworkAdapter)

StreamSocketListener에서 지정된 SocketProtectionLevel이 있는 지정된 네트워크 어댑터의 로컬 서비스 이름에 대한 소켓 바인딩 작업을 시작하여 바인딩된 소켓에 설정합니다.

CancelIOAsync()

StreamSocketListener 개체를 통해 보류 중인 읽기 및 쓰기를 취소합니다.

Close()

StreamSocketListener 개체를 닫습니다.

Dispose()

관리되지 않는 리소스의 확보, 해제 또는 다시 설정과 관련된 애플리케이션 정의 작업을 수행합니다.

EnableTransferOwnership(Guid)

앱이 활성 상태가 아닌 동안 이 StreamSocketListener 에 대한 트래픽이 도착할 때 소켓 브로커에 의해 앱의 백그라운드 작업을 트리거할 수 있도록 합니다.

EnableTransferOwnership(Guid, SocketActivityConnectedStandbyAction)

시스템이 연결된 대기 상태인 동안 이 StreamSocketListener 에 대한 트래픽이 도착할 때 소켓 브로커에 의해 앱의 백그라운드 작업을 트리거할 수 있도록 합니다.

TransferOwnership(String)

StreamSocketListener의 소유권을 소켓 조정 서비스로 이전합니다. 이 서비스는 소켓 작업을 모니터링하고 활동이 있는 경우 백그라운드 작업을 통해 앱에 알린 것입니다.

TransferOwnership(String, SocketActivityContext)

StreamSocketListener의 소유권을 소켓 조정 서비스로 이전합니다. 이 서비스는 소켓 작업을 모니터링하고 활동이 있는 경우 백그라운드 작업을 통해 앱에 알린 것입니다.

이벤트

ConnectionReceived

StreamSocketListener 개체에서 연결이 수신되었음을 나타내는 이벤트입니다.

적용 대상

추가 정보