Condividi tramite


Windows.Networking.Sockets Spazio dei nomi

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.

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