StreamSocketListener Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Unterstützt die Überwachung einer eingehenden Netzwerkverbindung mit einem TCP-Streamsocket oder 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
- Vererbung
- Attribute
- Implementiert
Windows-Anforderungen
| Anforderungen | Beschreibung |
|---|---|
| Gerätefamilie |
Windows 10 (eingeführt in 10.0.10240.0)
|
| API contract |
Windows.Foundation.UniversalApiContract (eingeführt in v1.0)
|
| App-Funktionen |
bluetooth.rfcomm
internetClientServer
privateNetworkClientServer
|
Hinweise
Die StreamSocketListener-Klasse unterstützt das Überwachen einer eingehenden Netzwerkverbindung mithilfe eines Datenstromsockets und akzeptieren die Verbindung.
Die typische Reihenfolge der Vorgänge lautet wie folgt:
- Erstellen Sie den StreamSocketListener.
- Verwenden Sie die Control-Eigenschaft , um ein StreamSocketListenerControl-Objekt abzurufen und die erforderliche Socketqualität des Diensts festzulegen.
- Weisen Sie das ConnectionReceived-Ereignis einem Ereignishandler zu.
- Rufen Sie die BindServiceNameAsync - oder BindEndpointAsync-Methode auf, um eine Bindung an eine lokale TCP-Portnummer oder einen Dienstnamen herzustellen. Für Bluetooth RFCOMM ist der lokale Dienstnameparameter die Bluetooth-Dienst-ID.
- Wenn eine Verbindung empfangen wird, verwenden Sie das StreamSocketListenerConnectionReceivedEventArgs-Objekt , um die Socket-Eigenschaft mit dem erstellten StreamSocket-Objekt abzurufen.
- Verwenden Sie das StreamSocket-Objekt , um Daten zu senden und zu empfangen.
- Rufen Sie die Close-Methode auf, um das Überwachen und Akzeptieren eingehender Netzwerkverbindungen zu beenden und alle nicht verwalteten Ressourcen freizugeben, die dem StreamSocketListener-Objekt zugeordnet sind. Alle StreamSocket-Objekte , die erstellt werden, wenn eine Verbindung empfangen wird, sind nicht betroffen und können weiterhin nach Bedarf verwendet werden.
Die SocketProtectionLevel-Aufzählung ermöglicht es einem Server, die Protokollaushandlung mit Clients zu steuern, wenn das StreamSocketListener-Objekt zum Überwachen und Binden an Sockets über Bluetooth verwendet wird. Wenn das StreamSocketListener-Objekt über Bluetooth verwendet wird, sind die unterstützten SocketProtectionLevel-WertePlainSocket, BluetoothEncryptionAllowNullAuthentication oder BluetoothEncryptionWithAuthentication. Wenn das StreamSocketListener-Objekt zum Überwachen und Binden an Sockets verwendet wird, die nicht Bluetooth verwenden, ist der einzige unterstützte SocketProtectionLevel-WertPlainSocket.
Um StreamSocketListener mit Bluetooth zu verwenden, muss die Bluetooth.rfcomm-Gerätefunktion im App-Manifest festgelegt werden. Weitere Informationen finden Sie unter Angeben von Gerätefunktionen für Bluetooth.
Behandeln von Ausnahmen
Sie müssen Code schreiben, um Ausnahmen zu behandeln, wenn Sie asynchrone Methoden für die StreamSocketListener-Klasse aufrufen. Ausnahmen können aus Parameterüberprüfungsfehlern, Namensauflösungsfehlern und Netzwerkfehlern resultieren. Ausnahmen von Netzwerkfehlern (z. B. Verbindungsverlust, Verbindungsfehler und Serverfehler) können jederzeit auftreten. Diese Fehler führen dazu, dass Ausnahmen ausgelöst werden. Wenn die App nicht behandelt wird, kann eine Ausnahme dazu führen, dass die gesamte App von der Laufzeit beendet wird.
Die Windows. Networking.Sockets-Namespace verfügt über Features, die die Behandlung von Fehlern bei der Verwendung von Sockets vereinfachen. Die GetStatus-Methode der SocketError-Klasse kann das HRESULT aus einer Ausnahme in einen SocketErrorStatus-Enumerationswert konvertieren. Dies kann nützlich sein, um bestimmte Netzwerk exceptions in Ihrer App anders zu behandeln. Eine App kann auch das HRESULT aus der Ausnahme bei Parameterüberprüfungsfehlern verwenden, um ausführlichere Informationen zum Fehler zu erhalten, der die Ausnahme verursacht hat.
Weitere Informationen zu möglichen Ausnahmen und zur Behandlung von Ausnahmen finden Sie unter Behandeln von Ausnahmen in Netzwerk-Apps.
Verwenden von StreamSocketListener mit Bluetooth
Ihre App kann StreamSocketListener verwenden, um netzwerkverbindungen über Bluetooth RFCOMM zu überwachen. Netzwerkverbindungen über Bluetooth verwenden eine Bluetooth-Dienst-ID als Endpunkt für Verbindungen, nicht einen IP-Port oder einen Dienstnamen. Um Bluetooth zu überwachen, ruft Ihre App eine der BindServiceNameAsync-Methoden für StreamSocketListener auf, wobei der parameter "localServiceName " auf eine Bluetooth-Dienst-ID festgelegt ist.
Um StreamSocketListener und StreamSocket mit Bluetooth zu verwenden, muss die Bluetooth.rfcomm-Gerätefunktion im App-Manifest festgelegt werden. Weitere Informationen finden Sie im Windows. Devices.Bluetooth.Rfcomm namespace, How to specify device capabilities for Bluetooth, and the Bluetooth Rfcomm Chat sample.
Verwenden von StreamSocketListener auf Windows Server 2012
Auf Windows Server 2012 und Windows Server 2012 R2 wird der Windows.Networking.dll, der die meisten Klassen in der Windows implementiert. Der Namespace "Networking.Sockets" kann nicht geladen werden, es sei denn, das Media Foundation-Feature ist aktiviert. Daher verwenden Apps, die StreamSocketListener und zugehörige Socketklassen im Windows verwenden. Der Namespace Networking.Sockets schlägt fehl, wenn das Media Foundation-Feature deaktiviert ist. Windows Server 2012- oder Windows Server 2012 R2-Installationen mit deaktivierter Media Foundation-Funktion.
Das Media Foundation-Feature kann auf Windows Server 2012 oder Windows Server 2012 R2 mithilfe von Server-Manager oder durch Eingeben des folgenden Texts in eine Eingabeaufforderung oder ein Skript aktiviert werden:
dism /online /enable-feature /featurename:ServerMediaFoundation Nachdem das Media Foundation-Feature aktiviert wurde, wird der Benutzer zum Neustart aufgefordert. Nachdem der Computer neu gestartet wurde, werden Klassen für Sockets und WebSockets im Windows. Networking.Sockets-Namespace funktioniert wie erwartet.
Konstruktoren
| Name | Beschreibung |
|---|---|
| StreamSocketListener() |
Erstellt ein neues StreamSocketListener -Objekt. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| Control |
Ruft Socketsteuerelementdaten für ein StreamSocketListener -Objekt ab. |
| Information |
Ruft Socketinformationen für das StreamSocketListener -Objekt ab. |
Methoden
| Name | Beschreibung |
|---|---|
| BindEndpointAsync(HostName, String) |
Startet einen Bindungsvorgang für einen StreamSocketListener an einen lokalen Hostnamen und einen lokalen Dienstnamen. |
| BindServiceNameAsync(String, SocketProtectionLevel, NetworkAdapter) |
Startet einen Socketbindungsvorgang für einen StreamSocketListener mit einem lokalen Dienstnamen auf einem angegebenen Netzwerkadapter mit einem angegebenen SocketProtectionLevel , der für alle gebundenen Sockets festgelegt werden soll. |
| BindServiceNameAsync(String, SocketProtectionLevel) |
Startet einen Bindungsvorgang für einen StreamSocketListener an einen lokalen Dienstnamen mit einem angegebenen SocketProtectionLevel , der für alle gebundenen Sockets festgelegt werden soll. |
| BindServiceNameAsync(String) |
Startet einen Bindungsvorgang für einen StreamSocketListener an einen lokalen Dienstnamen. |
| CancelIOAsync() |
Bricht ausstehende Lese- und Schreibvorgänge über ein StreamSocketListener -Objekt ab. |
| Close() |
Schließt das StreamSocketListener -Objekt. |
| Dispose() |
Führt anwendungsdefinierte Aufgaben aus, die mit dem Freigeben, Freigeben oder Zurücksetzen nicht verwalteter Ressourcen verknüpft sind. |
| EnableTransferOwnership(Guid, SocketActivityConnectedStandbyAction) |
Ermöglicht es der Hintergrundaufgabe Ihrer App, vom Socketbroker ausgelöst zu werden, wenn datenverkehr für diesen StreamSocketListener eingeht, während sich das System im verbundenen Standbymodus befindet. |
| EnableTransferOwnership(Guid) |
Ermöglicht es der Hintergrundaufgabe Ihrer App, vom Socketbroker ausgelöst zu werden, wenn datenverkehr für diesen StreamSocketListener eingeht, während die App nicht aktiv ist. |
| TransferOwnership(String, SocketActivityContext) |
Überträgt den Besitz des StreamSocketListener an den Socketbrokerdienst, der die Socketaktivität überwacht, und benachrichtigt die App über eine Hintergrundaufgabe, wenn eine Aktivität vorhanden ist. |
| TransferOwnership(String) |
Überträgt den Besitz des StreamSocketListener an den Socketbrokerdienst, der die Socketaktivität überwacht, und benachrichtigt die App über eine Hintergrundaufgabe, wenn eine Aktivität vorhanden ist. |
Events
| Name | Beschreibung |
|---|---|
| ConnectionReceived |
Ein Ereignis, das angibt, dass eine Verbindung im StreamSocketListener -Objekt empfangen wurde. |
Gilt für:
Siehe auch
- IClosable
- SocketError
- SocketErrorStatus
- StreamSocket
- StreamSocketListenerConnectionReceivedEventArgs
- StreamSocketListenerControl
- StreamSocketListenerInformation
- Herstellen einer Verbindung mit Sockets
- Behandeln von Ausnahmen in Netzwerk-Apps
- So stellen Sie eine Verbindung mit einem Datenstromsocket her
- So stellen Sie eine Verbindung mit einem Datenstromsocket her
- Angeben von Gerätefunktionen für Bluetooth
- So verwenden Sie erweiterte Socketsteuerelemente
- Problembehandlung und Debuggen von Netzwerkverbindungen
- Bluetooth Rfcomm-Chatbeispiel
- Beispiel für ControlChannelTrigger StreamSocket
- Näherungsbeispiel
- StreamSocket-Beispiel