Windows.Networking.Sockets Spazio dei nomi
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.
Fornisce socket e classi WebSocket da usare per le comunicazioni di rete e le classi per le notifiche di rete in tempo reale ricevute in background per le app UWP.
Classi
ControlChannelTrigger |
Consente di ricevere notifiche in tempo reale in background per gli oggetti che stabiliscono una connessione TCP e desiderano ricevere una notifica del traffico in ingresso. Chiamare **BackgroundExecutionManager.RequestAccessAsync** prima di usare ControlChannelTrigger. Nota Questa classe non è supportata in Windows Phone. |
DatagramSocket |
Supporta la comunicazione di rete usando un socket datagram UDP. Per un esempio di codice, vedere Socket. |
DatagramSocketControl |
Fornisce i dati di controllo socket in un oggetto DatagramSocket . |
DatagramSocketInformation |
Fornisce informazioni sul socket su un oggetto DatagramSocket . |
DatagramSocketMessageReceivedEventArgs |
Fornisce dati per un evento MessageReceived in un datagramSocket. |
MessageWebSocket |
Supporta la comunicazione di rete che consente la lettura e la scrittura di messaggi interi usando un WebSocket. |
MessageWebSocketControl |
Fornisce i dati di controllo socket in un MessageWebSocket. |
MessageWebSocketInformation |
Fornisce informazioni sul socket in un MessageWebSocket. |
MessageWebSocketMessageReceivedEventArgs |
Fornisce i dati per un evento ricevuto da messageWebSocket. |
ServerMessageWebSocket |
Supporta la comunicazione di rete che consente la lettura e la scrittura di messaggi interi usando un oggetto WebSocket di proprietà di un server Web. Non è possibile registrarsi per una connessione WebSocket arbitraria; invece, un'istanza di ServerMessageWebSocket viene creata dal codice di sistema, ad esempio il portale del dispositivo Windows (WDP). |
ServerMessageWebSocketControl |
Fornisce i dati di controllo socket in un serverMessageWebSocket. |
ServerMessageWebSocketInformation |
Fornisce informazioni sul socket in un serverMessageWebSocket. |
ServerStreamWebSocket |
Supporta la comunicazione di rete che consente la lettura e la scrittura di flussi usando un oggetto WebSocket di proprietà di un server Web. Non è possibile registrarsi per una connessione WebSocket arbitraria; invece, un'istanza di ServerStreamWebSocket viene creata dal codice di sistema, ad esempio il portale del dispositivo Windows (WDP). |
ServerStreamWebSocketInformation |
Fornisce informazioni sul socket su un oggetto ServerStreamWebSocket . |
SocketActivityContext |
Contesto associato a un socket durante il trasferimento della proprietà del socket tra un'app e il servizio di brokering socket. |
SocketActivityInformation |
Fornisce informazioni sul socket trasferito da Socket Broker. |
SocketActivityTriggerDetails |
Oggetto creato dall'infrastruttura broker in background e usato da un'app per recuperare i dettagli quando si verifica un SocketActivityTrigger . |
SocketError |
Fornisce lo stato di errore socket per le operazioni in un DatagramSocket, StreamSocket o StreamSocketListener. |
StreamSocket |
Supporta la comunicazione di rete usando un socket di flusso su TCP o Bluetooth RFCOMM nelle app UWP. |
StreamSocketControl |
Fornisce i dati di controllo socket in un oggetto StreamSocket . |
StreamSocketInformation |
Fornisce informazioni sul socket su un oggetto StreamSocket . |
StreamSocketListener |
Supporta l'ascolto di una connessione di rete in ingresso usando un socket di flusso TCP o RFCOMM Bluetooth. |
StreamSocketListenerConnectionReceivedEventArgs |
Fornisce dati per un evento ConnectionReceived in un oggetto StreamSocketListener . |
StreamSocketListenerControl |
Fornisce i dati di controllo socket in un oggetto StreamSocketListener . |
StreamSocketListenerInformation |
Fornisce informazioni sul socket su un oggetto StreamSocketListener . |
StreamWebSocket |
Supporta la comunicazione di rete che consente la lettura e la scrittura di flussi usando un WebSocket. |
StreamWebSocketControl |
Fornisce i dati di controllo socket in un oggetto StreamWebSocket . |
StreamWebSocketInformation |
Fornisce informazioni sul socket su un oggetto StreamWebSocket . |
WebSocketClosedEventArgs |
Fornisce dati per un evento chiuso in un oggetto MessageWebSocket, StreamWebSocket o IWebSocket. |
WebSocketError |
Fornisce lo stato di errore socket in un oggetto MessageWebSocket o StreamWebSocket . |
WebSocketKeepAlive |
Offre la possibilità di inviare un protocollo WebSocket keep-alive in un WebSocket connesso. |
WebSocketServerCustomValidationRequestedEventArgs |
Fornisce dati per un evento ServerCustomValidationRequested in un WebSocket. Questo evento si verifica quando viene eseguita una nuova connessione sicura a un WebSocket e consente al codice di eseguire la convalida personalizzata dei certificati del server prima che sia stata stabilita la connessione. |
Struct
BandwidthStatistics |
Rappresenta le informazioni sulla larghezza di banda per il trasferimento dei dati di rete usando un oggetto StreamSocket, StreamWebSocket o MessageWebSocket. |
RoundTripTimeStatistics |
Rappresenta le informazioni sull'ora di round trip per un oggetto StreamSocket . |
Interfacce
IControlChannelTriggerEventDetails |
Oggetto creato dall'infrastruttura broker in background usata per distinguere i trigger del canale di controllo. Nota Questa interfaccia non è supportata in Windows Phone. |
IControlChannelTriggerResetEventDetails |
Oggetto creato dall'infrastruttura broker in background per un evento ControlChannelReset per indicare che è stato reimpostato un oggetto ControlChannelTrigger . Nota Questa interfaccia non è supportata in Windows Phone. |
IWebSocket |
Fornisce l'accesso alla comunicazione di rete che consente la lettura e la scrittura usando un WebSocket. |
IWebSocketControl |
Fornisce i dati di controllo socket in un oggetto IWebSocket . |
IWebSocketControl2 |
Fornisce i dati di controllo socket in un oggetto IWebSocket . Questa interfaccia estende l'interfaccia IWebSocketControl con una proprietà aggiuntiva. |
IWebSocketInformation |
Fornisce informazioni sul socket su un oggetto IWebSocket . |
IWebSocketInformation2 |
Fornisce informazioni sul socket su un oggetto IWebSocket . Questa interfaccia estende IWebSocketInformation con proprietà aggiuntive. |
Enumerazioni
ControlChannelTriggerResetReason |
Motivo per cui è stato reimpostato un ControlChannelTrigger . Nota Questa enumerazione non è supportata in Windows Phone. |
ControlChannelTriggerResourceType |
Tipo di risorsa usato da un trigger del canale di controllo. Nota Questa enumerazione non è supportata in Windows Phone. |
ControlChannelTriggerStatus |
Specifica se il sistema è stato in grado di completare la configurazione di un oggetto ControlChannelTrigger da usare dagli elementi della classe negli spazi dei nomi Windows.Networking.Sockets e correlati. Nota Questa enumerazione non è supportata in Windows Phone. |
MessageWebSocketReceiveMode |
Descrive il tipo di messaggio che il client accetterà. |
SocketActivityConnectedStandbyAction |
Indica se un'app che usa il servizio di brokering socket può ricevere pacchetti quando il sistema passa allo stand by connesso. |
SocketActivityKind |
Descrive il tipo di oggetto socket da trasferire a o dal broker socket. |
SocketActivityTriggerReason |
Motivo per cui si è verificato un SocketActivityTrigger . |
SocketErrorStatus |
Specifica i valori di stato per un'operazione socket. |
SocketMessageType |
Specifica il tipo di messaggio per un oggetto MessageWebSocket . |
SocketProtectionLevel |
Specifica il livello di crittografia da usare in un oggetto StreamSocket . |
SocketQualityOfService |
Specifica la qualità del servizio per un oggetto DatagramSocket o StreamSocket . |
SocketSslErrorSeverity |
Categoria di errore che si verifica in una connessione SSL. |
Commenti
Lo spazio dei nomi Windows.Networking.Sockets fornisce classi e interfacce per la rete che usano socket e WebSocket. Ecco le classi primarie.
- DatagramSocket. Socket di datagrammi UDP da usare per la comunicazione di rete.
- StreamSocket. Socket di flusso da usare per la comunicazione di rete in ingresso o in uscita tramite TCP o tramite connessioni Bluetooth che usano RFCOMM.
- StreamSocketListener. Listener socket di flusso per ascoltare le connessioni di rete TCP in ingresso o connessioni Bluetooth in ingresso che usano RFCOMM.
- MessageWebSocket. WebSocket basato su messaggi per leggere e scrivere messaggi interi per la comunicazione di rete. Vedere WebSockets.
- StreamWebSocket. WebSocket basato su flusso per leggere e scrivere flussi per le comunicazioni di rete. Vedere WebSockets.
Queste classi primarie dispongono anche di una serie di informazioni e classi di controllo correlate nello spazio dei nomi Windows.Networking.Sockets.
Gestione delle eccezioni
È necessario scrivere codice per gestire le eccezioni quando si chiamano metodi asincroni nello spazio dei nomi Windows.Networking.Sockets. 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 pratici metodi helper ed enumerazioni per gestire gli errori quando si usano socket e WebSocket. 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 StreamSocket con prossimità, Wi-Fi Direct e Bluetooth
L'app può usare un streamSocket per le connessioni di rete tra i dispositivi che si trovano all'interno di un intervallo di chiusura. Le classi nello spazio dei nomi Windows.Networking.Proximity supportano le connessioni di rete con un streamSocket ai dispositivi vicini che usano Bluetooth o Wi-Fi Direct. Le classi PeerFinder e correlate nello spazio dei nomi Windows.Networking.Proximity consentono all'app di individuare un'altra istanza dell'app in un dispositivo vicino. Il metodo PeerFinder.FindAllPeersAsync cerca i computer peer che eseguono la stessa app all'interno dell'intervallo wireless. Il metodo PeerFinder.ConnectAsync restituisce un streamSocket connesso che l'app può usare per trasferire i dati di rete con l'app peer nelle vicinanze. Per altre informazioni, vedere Supporto della prossimità e del tocco, Windows.Networking.Proximity, PeerFinder e l'esempio di prossimità.
L'app può anche usare un streamSocket per le connessioni di rete tra dispositivi che usano Wi-Fi Direct con classi nello spazio dei nomi Windows.Devices.WiFiDirect . La classe WiFiDirectDevice può essere usata per individuare altri dispositivi che dispongono di un dispositivo compatibile con Direct (WFD) Wi-Fi. Il metodo WiFiDirectDevice.GetDeviceSelector ottiene l'identificatore del dispositivo per un dispositivo WFD vicino. Dopo avere un riferimento a un dispositivo WFD vicino, è possibile chiamare il metodo WiFiDirectDevice.GetConnectionEndpointPairs per ottenere un oggetto EndpointPair . Il metodo ConnectAsync(EndpointPair) o ConnectAsync(EndpointPair, SocketProtectionLevel) nella classe StreamSocket può quindi essere usato per stabilire una connessione socket. Per altre informazioni, vedere Windows.Devices.WiFiDirect e WiFiDirectDevice.
Bluetooth usa gli ID del servizio Bluetooth come endpoint per le connessioni StreamSocket , non nomi host o indirizzi IP. Per usare un streamSocket con Bluetooth, la funzionalità del dispositivo bluetooth.rfcomm deve essere impostata 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 DatagramSocket con Wi-Fi Direct
L'app può usare un DatagramSocket per i trasferimenti di dati di rete tra i dispositivi che usano Wi-Fi Direct usando le classi nello spazio dei nomi Windows.Devices.WiFiDirect . La classe WiFiDirectDevice può essere usata per individuare altri dispositivi che dispongono di un dispositivo compatibile con Direct (WFD) Wi-Fi. Il metodo WiFiDirectDevice.GetDeviceSelector ottiene l'identificatore del dispositivo per un dispositivo WFD vicino. Dopo avere un riferimento a un dispositivo WFD vicino, è possibile chiamare il metodo WiFiDirectDevice.GetConnectionEndpointPairs per ottenere un oggetto EndpointPair . I metodi della classe DatagramSocket possono essere usati per inviare e ricevere dati all'oggetto EndpointPair . Per altre informazioni, vedere Windows.Devices.WiFiDirect e WiFiDirectDevice.
Uso dei trigger di rete
Lo spazio dei nomi Windows.Networking.Sockets offre due tipi di trigger che l'app può usare per la rete in background: ControlChannelTrigger e SocketActivityTrigger.
Trigger canale di controllo
ControlChannelTrigger consente all'app di ricevere pacchetti di dati di rete e mantenere la rete quando l'app è in background. Ciò consente all'app di fornire notifiche di stato e rete in tempo reale per StreamSocket nello spazio dei nomi Windows.Networking.Sockets e altre classi di rete negli spazi dei nomi correlati.
I trigger di rete vengono usati dalle app di rete a esecuzione prolungata (ad esempio un'app di posta elettronica) per ridurre al minimo l'utilizzo delle risorse di rete e di sistema. I trigger di rete consentono a un'app di rilasciare una modalità a bassa potenza per periodi di tempo, mantenendo intatte le connessioni di rete, ma in uno stato a bassa potenza. È possibile impostare un intervallo keepalive per informare il sistema quando l'app deve riattivarsi. È anche possibile impostare un trigger per ricevere una notifica quando viene ricevuto un pacchetto per l'app. Queste funzionalità di notifica consentono di estendere la durata della batteria quando si usano app di rete a esecuzione prolungata nei dispositivi mobili.
Per altre informazioni, vedere la classe ControlChannelTrigger e Come impostare le opzioni di connettività in background.
Trigger attività socket
SocketActivityTrigger consente all'app di ricevere pacchetti di dati di rete quando non è attivo (anche se è sospeso o terminato) e anche quando non è attualmente caricato in memoria. Viene fornito in particolare per le app che forniscono servizi di rete, in cui l'app verrà registrata come provider di servizi tramite DNS-SD e quindi diventa inattiva. SocketActivityTrigger invia una notifica all'app quando un client connesso al servizio, in modo che il servizio possa attivare e fornire servizi richiesti. SocketActivityTrigger può essere usato anche in altre circostanze. Usarlo ogni volta che si vuole essere in grado di attivare l'app in risposta al traffico di rete ricevuto.
Se l'app usa trigger di attività socket, è necessario specificare la funzionalità pushNotifications nel manifesto dell'app.
Scelta di un trigger di rete
In alcuni scenari si può usare indifferentemente l'uno o l'altro tipo di trigger. Quando scegli il tipo di trigger da usare nella tua app, tieni in considerazione i consigli seguenti.
- Se usi elementi IXMLHTTPRequest2, System.Net.Http.HttpClient o System.Net.Http.HttpClientHandler, devi usare ControlChannelTrigger.
- Se si usa StreamSockets abilitato per push, preferire SocketActivityTrigger. Consente al sistema di liberare memoria e ridurre i requisiti di alimentazione quando la connessione non viene usata attivamente.
- Se si vuole ridurre al minimo il footprint di memoria dell'app quando non esegue attivamente la manutenzione delle richieste di rete, preferisce SocketActivityTrigger.
- Se vuoi che l'app possa ricevere dati mentre il sistema è in modalità Standby connesso, usa SocketActivityTrigger.
Uso di socket e WebSocket in Windows Server 2012
In Windows Server 2012 e Windows Server 2012 R2, la 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 socket o classi WebSocket nello spazio dei nomi Windows.Networking.Sockets avranno esito negativo se la funzionalità Media Foundation è disabilitata. Windows Server 2012 o Windows Server 2012 R2 installa 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.
Uso di socket e WebSocket con isolamento di rete
L'isolamento della rete in Windows 8 consente di controllare completamente il profilo di sicurezza di un'app UWP.
L'isolamento della rete consente di definire l'accesso di rete necessario per ogni app scegliendo le funzionalità appropriate. Un'app senza le funzionalità appropriate impostate non viene impedita l'uso di tipi di rete specifici (Internet o Rete home/work) e richieste di rete specifiche (richieste avviate dal client in uscita o richieste non richieste non richieste richieste in ingresso e richieste avviate dal client in uscita). La possibilità di applicare l'isolamento di rete garantisce che, anche se un'app diventa compromessa, l'app può usare solo funzionalità (tipi di rete e richieste di rete, ad esempio) concesse all'app come funzionalità. Ciò riduce significativamente l'impatto possibile su altre app e sul sistema operativo.
Windows 8 applica attivamente l'isolamento della rete. Una chiamata a un metodo o a qualsiasi accesso a una proprietà nello spazio dei nomi Windows.Networking.Sockets (o spazi dei nomi correlati che richiedono l'accesso alla rete) potrebbe non riuscire se la funzionalità di rete appropriata non è stata abilitata.
Le funzionalità di rete di un'app si configurano nel manifesto dell'app al momento della compilazione. Le funzionalità di rete vengono in genere aggiunte usando Visual Studio quando si sviluppa l'app. Possono anche essere impostati manualmente nel file manifesto dell'app usando un editor di testo.
Per informazioni più dettagliate sull'isolamento della rete, vedere Come configurare le funzionalità di isolamento della rete.
Vedi anche
- PeerFinder
- WiFiDirectDevice
- Windows.Devices.Bluetooth.Rfcomm
- Windows.Devices.WiFiDirect
- Windows.Networking
- Windows.Networking.Connectivity
- Windows.Networking.Proximity
- Aggiunta del supporto per la rete
- Connessione con socket
- WebSocket
- Gestione delle eccezioni nelle app di rete
- Come configurare le funzionalità di isolamento rete
- Come impostare le opzioni di connettività in background
- Come specificare le funzionalità dei dispositivi per Bluetooth
- Supporto della prossimità e del tocco
- Risoluzione dei problemi e debug delle connessioni di rete
- SetSocketMediaStreamingMode
- Esempio di Chat Rfcomm Bluetooth
- Esempio DatagramSocket
- Esempio controlChannelTrigger StreamWebSocket
- Esempio di socket TCP ControlChannelTrigger
- Esempio di prossimità
- Esempio StreamSocket
- Esempio DatagramSocket
- Esempio WebSocket
- Esempio StreamSocket
- esempio di Wi-Fi Direct
- esempio di servizi Wi-Fi Direct (Windows 10)
- Esempio di socket del socket di trigger di attività socket