Share via


StreamSocketListener Classe

Definizione

Supporta l'ascolto di una connessione di rete in ingresso usando un socket di flusso TCP o RFCOMM Bluetooth.

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
Ereditarietà
Object Platform::Object IInspectable StreamSocketListener
Attributi
Implementazioni

Requisiti Windows

Famiglia di dispositivi
Windows 10 (è stato introdotto in 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (è stato introdotto in v1.0)
Funzionalità dell'app
bluetooth.rfcomm ID_CAP_NETWORKING [Windows Phone] internetClientServer privateNetworkClientServer

Commenti

La classe StreamSocketListener supporta l'ascolto di una connessione di rete in ingresso usando un socket di flusso e accettando la connessione.

L'ordine tipico delle operazioni è il seguente:

  • Creare StreamSocketListener.
  • Utilizzare la proprietà Control per recuperare un oggetto StreamSocketListenerControl e impostare la qualità del socket del servizio necessaria.
  • Assegnare l'evento ConnectionReceived a un gestore eventi.
  • Chiamare il metodo BindServiceNameAsync o BindEndpointAsync per associare un numero di porta TCP locale o un nome del servizio. Per Bluetooth RFCOMM, il parametro del nome del servizio locale è l'ID del servizio Bluetooth.
  • Quando viene ricevuta una connessione, usare l'oggetto StreamSocketListenerConnectionReceivedEventArgs per recuperare la proprietà Socket con l'oggetto StreamSocket creato.
  • Usare l'oggetto StreamSocket per inviare e ricevere dati.
  • Chiamare il metodo Close per interrompere l'ascolto e accettare connessioni di rete in ingresso e rilasciare tutte le risorse non gestite associate all'oggetto StreamSocketListener. Tutti gli oggetti StreamSocket creati quando viene ricevuta una connessione non sono interessati e possono continuare a essere usati in base alle esigenze.

L'enumerazione SocketProtectionLevel consente a un server di controllare la negoziazione del protocollo con i client quando si usa l'oggetto StreamSocketListener per ascoltare e associare ai socket tramite Bluetooth. Quando l'oggetto StreamSocketListener viene usato tramite Bluetooth, i valori SocketProtectionLevel supportati sono PlainSocket, BluetoothEncryptionAllowNullAuthentication o BluetoothEncryptionWithAuthentication. Quando l'oggetto StreamSocketListener viene usato per ascoltare e associare ai socket non usando Bluetooth, l'unico valore SocketProtectionLevel supportato è PlainSocket.

Per usare StreamSocketListener con Bluetooth, la funzionalità del dispositivo bluetooth.rfcomm deve essere impostata nel manifesto dell'app. Per altre informazioni, vedere Come specificare le funzionalità del dispositivo per Bluetooth.

Gestione delle eccezioni

È necessario scrivere codice per gestire le eccezioni quando si chiamano metodi asincroni nella classe StreamSocketListener. Le eccezioni possono causare errori di convalida dei parametri, errori di risoluzione dei nomi e errori di rete. Eccezioni da errori di rete (perdita di connettività, errori di connessione e errori del server, ad esempio) possono verificarsi in qualsiasi momento. Questi errori causano la generazione di eccezioni. Se non gestito dall'app, un'eccezione può causare la chiusura dell'intera app dal runtime.

Lo spazio dei nomi Windows.Networking.Sockets offre funzionalità che semplificano la gestione degli errori durante l'uso dei socket. Il metodo GetStatus nella classe SocketError può convertire HRESULT da un'eccezione a un valore di enumerazione SocketErrorStatus. Ciò può risultare utile per gestire specifiche eccezioni di rete in modo diverso nell'app. Un'app può anche usare HRESULT dall'eccezione sugli errori di convalida dei parametri per ottenere informazioni più dettagliate sull'errore che ha causato l'eccezione.

Per altre informazioni sulle possibili eccezioni e su come gestire le eccezioni, vedere Gestione delle eccezioni nelle app di rete.

Uso di StreamSocketListener con Bluetooth

L'app può usare StreamSocketListener per ascoltare le connessioni di rete tramite RFCOMM Bluetooth. Le connessioni di rete tramite Bluetooth usano un ID servizio Bluetooth come endpoint per le connessioni, non una porta IP o un nome del servizio. Per ascoltare Bluetooth, l'app chiamerebbe uno dei metodi BindServiceNameAsync in StreamSocketListener con il parametro localServiceName impostato su un ID servizio Bluetooth.

Per usare StreamSocketListener e StreamSocket con Bluetooth, è necessario impostare la funzionalità del dispositivo bluetooth.rfcomm nel manifesto dell'app. Per altre informazioni, vedere lo spazio dei nomi Windows.Devices.Bluetooth.Rfcomm, Come specificare le funzionalità del dispositivo per Bluetooth e l'esempio di Chat Rfcomm Bluetooth.

Uso di StreamSocketListener in Windows Server 2012

In Windows Server 2012 e Windows Server 2012 R2, l'Windows.Networking.dll che implementa la maggior parte delle classi nello spazio dei nomi Windows.Networking.Sockets non riuscirà a caricare a meno che non sia abilitata la funzionalità Media Foundation. Di conseguenza, le app che usano StreamSocketListener e le classi socket correlate nello spazio dei nomi Windows.Networking.Sockets avranno esito negativo se la funzionalità Media Foundation è disabilitata. Windows Server 2012 o Windows Server 2012 R2 viene installato con la funzionalità Media Foundation disabilitata.

La funzionalità Media Foundation può essere abilitata in Windows Server 2012 o Windows Server 2012 R2 usando Server Manager o immettendo il testo seguente in un prompt dei comandi o in uno script:

dism /online /enable-feature /featurename:ServerMediaFoundation Dopo l'abilitazione della funzionalità Media Foundation, viene richiesto di riavviare l'utente. Dopo il riavvio del computer, le classi per socket e WebSocket nello spazio dei nomi Windows.Networking.Sockets funzioneranno come previsto.

Costruttori

StreamSocketListener()

Crea un nuovo oggetto StreamSocketListener .

Proprietà

Control

Ottiene i dati del controllo socket in un oggetto StreamSocketListener .

Information

Ottiene informazioni sul socket per l'oggetto StreamSocketListener .

Metodi

BindEndpointAsync(HostName, String)

Avvia un'operazione di associazione in un oggetto StreamSocketListener in un nome host locale e in un nome del servizio locale.

BindServiceNameAsync(String)

Avvia un'operazione di associazione in un oggetto StreamSocketListener in un nome del servizio locale.

BindServiceNameAsync(String, SocketProtectionLevel)

Avvia un'operazione di associazione in un oggetto StreamSocketListener su un nome del servizio locale con un socketProtectionLevel specificato da impostare su qualsiasi socket associato.

BindServiceNameAsync(String, SocketProtectionLevel, NetworkAdapter)

Avvia un'operazione di associazione socket in un oggetto StreamSocketListener in un nome di servizio locale in una scheda di rete specificata con socketProtectionLevel specificato da impostare su qualsiasi socket associato.

CancelIOAsync()

Annulla le letture e le scritture in sospeso su un oggetto StreamSocketListener .

Close()

Chiude l'oggetto StreamSocketListener .

Dispose()

Esegue attività definite dall'applicazione, come rilasciare o reimpostare risorse non gestite.

EnableTransferOwnership(Guid)

Abilita l'attività in background dell'app da attivare dal broker socket quando il traffico per questo streamSocketListener arriva mentre l'app non è attiva.

EnableTransferOwnership(Guid, SocketActivityConnectedStandbyAction)

Abilita l'attività in background dell'app da attivare dal broker socket quando il traffico per questo streamSocketListener arriva mentre il sistema è in standby connesso.

TransferOwnership(String)

Trasferisce la proprietà dell'oggetto StreamSocketListener al servizio di brokering socket, che monitora l'attività socket e notifica all'app tramite un'attività in background se è presente un'attività.

TransferOwnership(String, SocketActivityContext)

Trasferisce la proprietà dell'oggetto StreamSocketListener al servizio di brokering socket, che monitora l'attività socket e notifica all'app tramite un'attività in background se è presente un'attività.

Eventi

ConnectionReceived

Evento che indica che una connessione è stata ricevuta nell'oggetto StreamSocketListener .

Si applica a

Vedi anche