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 das Lauschen auf eine eingehende Netzwerkverbindung über einen TCP-Stream-Socket 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
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
ID_CAP_NETWORKING [Windows Phone]
internetClientServer
privateNetworkClientServer
|
Hinweise
Die StreamSocketListener-Klasse unterstützt das Lauschen auf eine eingehende Netzwerkverbindung mithilfe eines Streamsockets und das Akzeptieren der Verbindung.
Die typische Reihenfolge der Vorgänge lautet wie folgt:
- Erstellen Sie 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 an eine lokale TCP-Portnummer oder einen lokalen Dienstnamen zu binden. Für Bluetooth RFCOMM ist der parameter für den lokalen Dienstname 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 die Überwachung und Annahme eingehender Netzwerkverbindungen zu beenden und alle nicht verwalteten Ressourcen freizugeben, die dem StreamSocketListener-Objekt zugeordnet sind. Alle StreamSocket-Objekte , die beim Empfang einer Verbindung erstellt werden, sind nicht betroffen und können weiterhin bei Bedarf verwendet werden.
Die SocketProtectionLevel-Enumeration ermöglicht es einem Server, die Protokollaushandlung mit Clients zu steuern, wenn das StreamSocketListener-Objekt zum Lauschen 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 Lauschen 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 Gerätefunktion bluetooth.rfcomm 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 sich auf Fehler bei der Parameterüberprüfung, Fehler bei der Namensauflösung und Netzwerkfehlern ergeben. Ausnahmen von Netzwerkfehlern (z. B. Verbindungsverlust, Verbindungsfehler und Serverfehler) können jederzeit auftreten. Diese Fehler haben zur Folge, dass Ausnahmen ausgelöst werden. Wenn sie nicht von Ihrer App verarbeitet wird, kann eine Ausnahme dazu führen, dass Ihre gesamte App von der Runtime beendet wird.
Der Windows.Networking.Sockets-Namespace verfügt über Features, die die Behandlung von Fehlern bei der Verwendung von Sockets vereinfachen. Die GetStatus-Methode für die SocketError-Klasse kann das HRESULT von einer Ausnahme in einen SocketErrorStatus-Enumerationswert konvertieren. Mit ihnen lassen sich spezifische Netzwerkausnahmen in der App unterschiedlich behandeln. Eine App kann auch das HRESULT aus der Ausnahme für Parameterüberprüfungsfehler verwenden, um ausführlichere Informationen zu dem Fehler zu erhalten, der die Ausnahme verursacht hat.
Weitere Informationen zu möglichen Ausnahmen und zum Behandeln von Ausnahmen finden Sie unter Behandeln von Ausnahmen in Netzwerk-Apps.
Verwenden von StreamSocketListener mit Bluetooth
Ihre App kann StreamSocketListener verwenden, um über Bluetooth RFCOMM auf Netzwerkverbindungen zu lauschen. Netzwerkverbindungen über Bluetooth verwenden eine Bluetooth-Dienst-ID als Endpunkt für Verbindungen, nicht einen IP-Port oder einen Dienstnamen. Um auf Bluetooth zu lauschen, ruft Ihre App eine der BindServiceNameAsync-Methoden in StreamSocketListener auf, wobei der parameter localServiceName auf eine Bluetooth-Dienst-ID festgelegt ist.
Um StreamSocketListener und StreamSocket mit Bluetooth zu verwenden, muss die Gerätefunktion bluetooth.rfcomm im App-Manifest festgelegt werden. Weitere Informationen finden Sie im Windows.Devices.Bluetooth.Rfcomm-Namespace , angeben von Gerätefunktionen für Bluetooth und im Beispiel Bluetooth Rfcomm Chat.
Verwenden von StreamSocketListener auf Windows Server 2012
Auf Windows Server 2012 und Windows Server 2012 R2 kann die Windows.Networking.dll, die die meisten Klassen im Windows.Networking.Sockets-Namespace implementiert, nicht geladen werden, es sei denn, das Media Foundation-Feature ist aktiviert. Daher schlagen Apps, die StreamSocketListener und zugehörige Socketklassen im Windows.Networking.Sockets-Namespace verwenden, fehl, wenn das Media Foundation-Feature deaktiviert ist. Windows Server 2012 oder Windows Server 2012 R2-Installationen mit deaktiviertem Media Foundation-Feature.
Das Media Foundation-Feature kann auf Windows Server 2012 oder Windows Server 2012 R2 mithilfe von Server-Manager oder durch Eingabe 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. Nach dem Neustart des Computers funktionieren Klassen für Sockets und WebSockets im Windows.Networking.Sockets-Namespace wie erwartet.
Konstruktoren
StreamSocketListener() |
Erstellt ein neues StreamSocketListener-Objekt . |
Eigenschaften
Control |
Ruft Socketsteuerelementdaten für ein StreamSocketListener-Objekt ab. |
Information |
Ruft Socketinformationen für das StreamSocketListener-Objekt ab. |
Methoden
BindEndpointAsync(HostName, String) |
Startet einen Bindungsvorgang für einen StreamSocketListener an einen lokalen Hostnamen und einen lokalen Dienstnamen. |
BindServiceNameAsync(String) |
Startet einen Bindungsvorgang für einen StreamSocketListener an einen lokalen Dienstnamen. |
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 wird. |
BindServiceNameAsync(String, SocketProtectionLevel, NetworkAdapter) |
Startet einen Socketbindungsvorgang für einen StreamSocketListener an einen lokalen Dienstnamen auf einem angegebenen Netzwerkadapter mit einem angegebenen SocketProtectionLevel , der für alle gebundenen Sockets festgelegt wird. |
CancelIOAsync() |
Bricht ausstehende Lese- und Schreibvorgänge über ein StreamSocketListener-Objekt ab. |
Close() |
Schließt das StreamSocketListener-Objekt . |
Dispose() |
Führt anwendungsspezifische Aufgaben durch, die mit der Freigabe, der Zurückgabe oder dem Zurücksetzen von nicht verwalteten Ressourcen zusammenhängen. |
EnableTransferOwnership(Guid) |
Ermöglicht, dass die Hintergrundaufgabe Ihrer App vom Socketbroker ausgelöst wird, wenn Datenverkehr für diesen StreamSocketListener eingeht, während die App nicht aktiv ist. |
EnableTransferOwnership(Guid, SocketActivityConnectedStandbyAction) |
Ermöglicht, dass die Hintergrundaufgabe Ihrer App vom Socketbroker ausgelöst wird, wenn Datenverkehr für diesen StreamSocketListener eingeht, während sich das System im verbundenen Standbymodus befindet. |
TransferOwnership(String) |
Überträgt den Besitz von StreamSocketListener an den Socketbrokerdienst, der die Socketaktivität überwacht und die App über eine Hintergrundaufgabe benachrichtigt, wenn Aktivität vorhanden ist. |
TransferOwnership(String, SocketActivityContext) |
Überträgt den Besitz von StreamSocketListener an den Socketbrokerdienst, der die Socketaktivität überwacht und die App über eine Hintergrundaufgabe benachrichtigt, wenn Aktivität vorhanden ist. |
Ereignisse
ConnectionReceived |
Ein Ereignis, das angibt, dass eine Verbindung mit dem StreamSocketListener-Objekt empfangen wurde. |
Gilt für:
Weitere Informationen
- IClosable
- SocketError
- SocketErrorStatus
- StreamSocket
- StreamSocketListenerConnectionReceivedEventArgs
- StreamSocketListenerControl
- StreamSocketListenerInformation
- Herstellen einer Verbindung mit Sockets
- Behandeln von Ausnahmen in Netzwerk-Apps
- Herstellen einer Verbindung mit einem Streamsocket
- Herstellen einer Verbindung mit einem Streamsocket
- Angeben von Gerätefunktionen für Bluetooth
- Verwenden erweiterter Socketsteuerelemente
- Problembehandlung und Debuggen von Netzwerkverbindungen
- Beispiel für Bluetooth Rfcomm-Chat
- ControlChannelTrigger StreamSocket-Beispiel
- Näherungsbeispiel
- Beispiel für StreamSocket