StreamSocketListener Classe

Définition

Prend en charge l’écoute d’une connexion réseau entrante à l’aide d’un socket de flux TCP ou d’un 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
Héritage
Object Platform::Object IInspectable StreamSocketListener
Attributs
Implémente

Configuration requise pour Windows

Famille d’appareils
Windows 10 (introduit dans 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (introduit dans v1.0)
Fonctionnalités de l’application
bluetooth.rfcomm ID_CAP_NETWORKING [Windows Phone] internetClientServer privateNetworkClientServer

Remarques

La classe StreamSocketListener prend en charge l’écoute d’une connexion réseau entrante à l’aide d’un socket de flux et l’acceptation de la connexion.

L’ordre classique des opérations est le suivant :

  • Créez streamSocketListener.
  • Utilisez la propriété Control pour récupérer un objet StreamSocketListenerControl et définir la qualité de service de socket requise.
  • Affectez l’événement ConnectionReceived à un gestionnaire d’événements.
  • Appelez la méthode BindServiceNameAsync ou BindEndpointAsync pour établir une liaison avec un numéro de port TCP local ou un nom de service. Pour Bluetooth RFCOMM, le paramètre de nom du service local est l’ID du service Bluetooth.
  • Lorsqu’une connexion est reçue, utilisez l’objet StreamSocketListenerConnectionReceivedEventArgs pour récupérer la propriété Socket avec l’objet StreamSocket créé.
  • Utilisez l’objet StreamSocket pour envoyer et recevoir des données.
  • Appelez la méthode Close pour arrêter l’écoute et l’acceptation des connexions réseau entrantes et libérer toutes les ressources non managées associées à l’objet StreamSocketListener. Tous les objets StreamSocket créés lors de la réception d’une connexion ne sont pas affectés et peuvent continuer à être utilisés si nécessaire.

L’énumération SocketProtectionLevel permet à un serveur de contrôler la négociation de protocole avec les clients lors de l’utilisation de l’objet StreamSocketListener pour écouter et lier des sockets via Bluetooth. Lorsque l’objet StreamSocketListener est utilisé via Bluetooth, les valeurs SocketProtectionLevel prises en charge sont PlainSocket, BluetoothEncryptionAllowNullAuthentication ou BluetoothEncryptionWithAuthentication. Lorsque l’objet StreamSocketListener est utilisé pour écouter et lier des sockets qui n’utilisent pas Bluetooth, la seule valeur SocketProtectionLevel prise en charge est PlainSocket.

Pour utiliser StreamSocketListener avec Bluetooth, la fonctionnalité d’appareil bluetooth.rfcomm doit être définie dans le manifeste de l’application. Pour plus d’informations, consultez Comment spécifier des fonctionnalités d’appareil pour Bluetooth.

Gestion des exceptions

Vous devez écrire du code pour gérer les exceptions lorsque vous appelez des méthodes asynchrones sur la classe StreamSocketListener. Les exceptions peuvent résulter d’erreurs de validation de paramètre, d’échecs de résolution de noms et d’erreurs réseau. Les exceptions des erreurs réseau (perte de connectivité, échecs de connexion et défaillances de serveur, par exemple) peuvent se produire à tout moment. Ces erreurs donnent lieu à la levée d’exceptions. Si elle n’est pas gérée par votre application, une exception peut entraîner l’arrêt de l’ensemble de votre application par le runtime.

L’espace de noms Windows.Networking.Sockets a des fonctionnalités qui simplifient la gestion des erreurs lors de l’utilisation de sockets. La méthode GetStatus de la classe SocketError peut convertir le HRESULT d’une exception en valeur d’énumération SocketErrorStatus . Ceci peut s’avérer utile pour gérer différemment certaines exceptions réseau dans votre application. Une application peut également utiliser le HRESULT de l’exception sur les erreurs de validation de paramètre pour obtenir des informations plus détaillées sur l’erreur à l’origine de l’exception.

Pour plus d’informations sur les exceptions possibles et sur la façon de gérer les exceptions, consultez Gestion des exceptions dans les applications réseau.

Utilisation de StreamSocketListener avec Bluetooth

Votre application peut utiliser StreamSocketListener pour écouter les connexions réseau via Bluetooth RFCOMM. Les connexions réseau via Bluetooth utilisent un ID de service Bluetooth comme point de terminaison pour les connexions, et non un port IP ou un nom de service. Pour écouter Bluetooth, votre application appelle l’une des méthodes BindServiceNameAsync sur StreamSocketListener avec le paramètre localServiceName défini sur un ID de service Bluetooth.

Pour utiliser StreamSocketListener et StreamSocket avec Bluetooth, la fonctionnalité d’appareil bluetooth.rfcomm doit être définie dans le manifeste de l’application. Pour plus d’informations, consultez l’espace de noms Windows.Devices.Bluetooth.Rfcomm , Comment spécifier des fonctionnalités d’appareil pour Bluetooth et l’exemple de conversation Bluetooth Rfcomm.

Utilisation de StreamSocketListener sur Windows Server 2012

Sur Windows Server 2012 et Windows Server 2012 R2, le Windows.Networking.dll qui implémente la plupart des classes dans l’espace de noms Windows.Networking.Sockets ne parvient pas à se charger, sauf si la fonctionnalité Media Foundation est activée. Par conséquent, les applications qui utilisent StreamSocketListener et les classes de socket associées dans l’espace de noms Windows.Networking.Sockets échouent si la fonctionnalité Media Foundation est désactivée. Windows Server 2012 ou Windows Server 2012 R2 s’installe avec la fonctionnalité Media Foundation désactivée.

La fonctionnalité Media Foundation peut être activée sur Windows Server 2012 ou Windows Server 2012 R2 à l’aide de Gestionnaire de serveur ou en entrant le texte suivant dans une invite de commandes ou un script :

dism /online /enable-feature /featurename:ServerMediaFoundation Une fois la fonctionnalité Media Foundation activée, l’utilisateur est invité à redémarrer. Une fois l’ordinateur redémarré, les classes pour sockets et WebSockets dans l’espace de noms Windows.Networking.Sockets fonctionnent comme prévu.

Constructeurs

StreamSocketListener()

Crée un objet StreamSocketListener .

Propriétés

Control

Obtient les données de contrôle de socket sur un objet StreamSocketListener .

Information

Obtient des informations de socket pour l’objet StreamSocketListener .

Méthodes

BindEndpointAsync(HostName, String)

Démarre une opération de liaison sur un StreamSocketListener vers un nom d’hôte local et un nom de service local.

BindServiceNameAsync(String)

Démarre une opération de liaison sur un StreamSocketListener à un nom de service local.

BindServiceNameAsync(String, SocketProtectionLevel)

Démarre une opération de liaison sur un StreamSocketListener à un nom de service local avec un SocketProtectionLevel spécifié à définir sur tous les sockets liés.

BindServiceNameAsync(String, SocketProtectionLevel, NetworkAdapter)

Démarre une opération de liaison de socket sur un StreamSocketListener vers un nom de service local sur une carte réseau spécifiée avec un SocketProtectionLevel spécifié à définir sur tous les sockets liés.

CancelIOAsync()

Annule les lectures et écritures en attente sur un objet StreamSocketListener .

Close()

Ferme l’objet StreamSocketListener .

Dispose()

Exécute les tâches définies par l'application associées à la libération ou à la redéfinition des ressources non managées.

EnableTransferOwnership(Guid)

Permet à la tâche en arrière-plan de votre application d’être déclenchée par le répartiteur de sockets lorsque le trafic pour ce StreamSocketListener arrive alors que l’application n’est pas active.

EnableTransferOwnership(Guid, SocketActivityConnectedStandbyAction)

Permet à la tâche en arrière-plan de votre application d’être déclenchée par le répartiteur de sockets lorsque le trafic de ce StreamSocketListener arrive alors que le système est en veille connectée.

TransferOwnership(String)

Transfère la propriété de StreamSocketListener au service de distribution de sockets, qui surveille l’activité de socket et avertit l’application par le biais d’une tâche en arrière-plan en cas d’activité.

TransferOwnership(String, SocketActivityContext)

Transfère la propriété de StreamSocketListener au service de distribution de sockets, qui surveille l’activité de socket et avertit l’application par le biais d’une tâche en arrière-plan en cas d’activité.

Événements

ConnectionReceived

Événement qui indique qu’une connexion a été reçue sur l’objet StreamSocketListener .

S’applique à

Voir aussi