StreamSocketListener Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Supporta l'ascolto di una connessione di rete in ingresso tramite 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à
- Attributi
- Implementazioni
Requisiti Windows
| Requisiti | Descrizione |
|---|---|
| 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
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 richiesta.
- Assegnare l'evento ConnectionReceived a un gestore eventi.
- Chiamare il metodo BindServiceNameAsync o BindEndpointAsync per eseguire l'associazione a un nome di porta o di servizio TCP locale. Per Bluetooth RFCOMM, il parametro del nome del servizio locale è l'ID servizio Bluetooth.
- Quando viene ricevuta una connessione, utilizzare 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 le 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 i 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 i socket che non usano 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 derivare da errori di convalida dei parametri, errori di risoluzione dei nomi ed errori di rete. Le eccezioni da errori di rete (perdita di connettività, errori di connessione e errori del server, ad esempio) possono verificarsi in qualsiasi momento. Questi errori generano eccezioni. Se non gestita dall'app, un'eccezione può causare la terminazione dell'intera app da parte del runtime.
Windows. Lo spazio dei nomi Networking.Sockets include funzionalità che semplificano la gestione degli errori quando si usano i socket. Il metodo GetStatus nella classe SocketError può convertire HRESULT da un'eccezione a un valore di enumerazione SocketErrorStatus . Questo può essere utile per gestire eccezioni di rete specifiche 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 di 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, la funzionalità del dispositivo bluetooth.rfcomm deve essere impostata nel manifesto dell'app. Per altre informazioni, vedere il Windows. Spazio dei nomi Devices.Bluetooth.Rfcomm, Come specificare le funzionalità del dispositivo per Bluetooth e l'esempio Bluetooth Rfcomm Chat.
Uso di StreamSocketListener in Windows Server 2012
In Windows Server 2012 e Windows Server 2012 R2, il Windows.Networking.dll che implementa la maggior parte delle classi nella Windows. Lo spazio dei nomi Networking.Sockets non verrà caricato a meno che non sia abilitata la funzionalità Media Foundation. Di conseguenza, le app che usano StreamSocketListener e le classi socket correlate nel Windows. Lo spazio dei nomi Networking.Sockets avrà 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 aver abilitato la funzionalità Media Foundation, all'utente viene richiesto di riavviare. Dopo il riavvio del computer, le classi per socket e WebSocket nel Windows. Lo spazio dei nomi Networking.Sockets funzionerà come previsto.
Costruttori
| Nome | Descrizione |
|---|---|
| StreamSocketListener() |
Crea un nuovo oggetto StreamSocketListener . |
Proprietà
| Nome | Descrizione |
|---|---|
| Control |
Ottiene i dati del controllo socket in un oggetto StreamSocketListener . |
| Information |
Ottiene le informazioni sul socket per l'oggetto StreamSocketListener . |
Metodi
| Nome | Descrizione |
|---|---|
| BindEndpointAsync(HostName, String) |
Avvia un'operazione di associazione in un oggetto StreamSocketListener in un nome host locale e un nome di servizio locale. |
| BindServiceNameAsync(String, SocketProtectionLevel, NetworkAdapter) |
Avvia un'operazione di associazione socket su un oggetto StreamSocketListener su un nome di servizio locale in una scheda di rete specificata con un socket SocketProtectionLevel specificato da impostare su qualsiasi socket associato. |
| BindServiceNameAsync(String, SocketProtectionLevel) |
Avvia un'operazione di associazione in un oggetto StreamSocketListener a un nome di servizio locale con un socket SocketProtectionLevel specificato da impostare su qualsiasi socket associato. |
| BindServiceNameAsync(String) |
Avvia un'operazione di associazione in un oggetto StreamSocketListener in un nome di servizio locale. |
| CancelIOAsync() |
Annulla letture e scritture in sospeso su un oggetto StreamSocketListener . |
| Close() |
Chiude l'oggetto StreamSocketListener . |
| Dispose() |
Esegue attività definite dall'applicazione associate alla liberazione, al rilascio o alla reimpostazione di risorse non gestite. |
| EnableTransferOwnership(Guid, SocketActivityConnectedStandbyAction) |
Consente l'attivazione dell'attività in background dell'app da parte del gestore del socket quando arriva il traffico per questo streamSocketListener mentre il sistema è in standby connesso. |
| EnableTransferOwnership(Guid) |
Consente l'attivazione dell'attività in background dell'app da parte del gestore socket quando arriva il traffico per questo streamSocketListener mentre l'app non è attiva. |
| TransferOwnership(String, SocketActivityContext) |
Trasferisce la proprietà dell'oggetto StreamSocketListener al servizio di brokering socket, che monitora l'attività socket e invia una notifica all'app tramite un'attività in background se è presente un'attività. |
| TransferOwnership(String) |
Trasferisce la proprietà dell'oggetto StreamSocketListener al servizio di brokering socket, che monitora l'attività socket e invia una notifica all'app tramite un'attività in background se è presente un'attività. |
Eventi
| Nome | Descrizione |
|---|---|
| ConnectionReceived |
Evento che indica che è stata ricevuta una connessione nell'oggetto StreamSocketListener . |
Si applica a
Vedi anche
- IClosable
- SocketError
- SocketErrorStatus
- StreamSocket
- StreamSocketListenerConnectionReceivedEventArgs
- StreamSocketListenerControl
- StreamSocketListenerInformation
- Connessione con socket
- Gestione delle eccezioni nelle app di rete
- Come connettersi con un socket di flusso
- Come connettersi con un socket di flusso
- Come specificare le funzionalità del dispositivo per Bluetooth
- Come usare controlli socket avanzati
- Risolvere i problemi ed eseguire il debug delle connessioni di rete
- Esempio di Chat Rfcomm Bluetooth
- Esempio di StreamSocket ControlChannelTrigger
- Esempio di prossimità
- Esempio di StreamSocket