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 di Windows incluse le app desktop UWP e SDK per app di Windows (WinUI 3).

Classi

Nome Descrizione
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.

DatagramSocket

Supporta la comunicazione di rete tramite un socket di datagrammi UDP.

Per un esempio di codice, vedere Socket.

DatagramSocketControl

Fornisce 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 oggetto DatagramSocket.

MessageWebSocket

Supporta la comunicazione di rete che consente la lettura e la scrittura di interi messaggi usando un WebSocket.

MessageWebSocketControl

Fornisce dati di controllo socket in un MessageWebSocket.

MessageWebSocketInformation

Fornisce informazioni sul socket su messageWebSocket.

MessageWebSocketMessageReceivedEventArgs

Fornisce i dati per un evento ricevuto da un messaggio in messageWebSocket.

ServerMessageWebSocket

Supporta la comunicazione di rete che consente la lettura e la scrittura di interi messaggi usando un oggetto WebSocket di proprietà di un server Web. Non è possibile registrarsi per una connessione WebSocket arbitraria; Al contrario, un'istanza di ServerMessageWebSocket viene creata dal codice di sistema, ad esempio il portale di dispositivi Windows (WDP).

ServerMessageWebSocketControl

Fornisce i dati del 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 tramite un oggetto WebSocket di proprietà di un server Web. Non è possibile registrarsi per una connessione WebSocket arbitraria; Al contrario, un'istanza di ServerStreamWebSocket viene creata dal codice di sistema, ad esempio il portale di dispositivi 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 di cui è stata creata un'istanza dall'infrastruttura broker in background e usata da un'app per recuperare i dettagli quando si verifica un socketActivityTrigger .

SocketError

Fornisce lo stato di errore del socket per le operazioni su un oggetto 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 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 tramite un socket di flusso TCP o RFCOMM Bluetooth.

StreamSocketListenerConnectionReceivedEventArgs

Fornisce dati per un evento ConnectionReceived in un oggetto StreamSocketListener .

StreamSocketListenerControl

Fornisce i dati del 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 del 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

Consente 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 stabilita una nuova connessione sicura a un WebSocket e offre al codice la possibilità di eseguire la convalida personalizzata dei certificati del server prima che venga stabilita la connessione.

Struct

Nome Descrizione
BandwidthStatistics

Rappresenta le informazioni sulla larghezza di banda per il trasferimento dei dati di rete tramite un oggetto StreamSocket, StreamWebSocket o MessageWebSocket .

RoundTripTimeStatistics

Rappresenta le informazioni sull'ora di round trip per un oggetto StreamSocket .

Interfacce

Nome Descrizione
IControlChannelTriggerEventDetails

Oggetto di cui viene creata un'istanza dall'infrastruttura broker in background usata per distinguere i trigger del canale di controllo.

IControlChannelTriggerResetEventDetails

Oggetto di cui è stata creata un'istanza dall'infrastruttura broker in background per un evento ControlChannelReset per indicare che è stato reimpostato un oggetto ControlChannelTrigger .

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

Nome Descrizione
ControlChannelTriggerResetReason

Motivo per cui è stato reimpostato controlChannelTrigger .

ControlChannelTriggerResourceType

Tipo di risorsa usato da un trigger del canale di controllo.

ControlChannelTriggerStatus

Specifica se il sistema è riuscito a completare la configurazione di un oggetto ControlChannelTrigger da utilizzare dagli elementi della classe nel Windows. Networking.Sockets e spazi dei nomi correlati.

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 da o verso il gestore del 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

Annotazioni

Compatibilità del framework app: Windows. Le API Networking.Sockets sono disponibili per le app desktop SDK per app di Windows (WinUI 3) e le app desktop Win32, non solo per le app UWP. Le app desktop in pacchetto usano le stesse dichiarazioni di funzionalità di rete delle app UWP. Le app desktop senza pacchetti hanno accesso alla rete senza restrizioni e non devono dichiarare funzionalità. Per indicazioni, vedere Chiamare le API Windows Runtime nelle app desktop.

Windows. Lo spazio dei nomi 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 l'ascolto delle connessioni di rete TCP in ingresso o connessioni Bluetooth in ingresso che usano RFCOMM.
  • MessageWebSocket. WebSocket basato su messaggi per leggere e scrivere interi messaggi per la comunicazione di rete. Vedere WebSocket.
  • StreamWebSocket. WebSocket basato su flusso per leggere e scrivere flussi per le comunicazioni di rete. Vedere WebSocket.

Queste classi primarie hanno anche una serie di informazioni e classi di controllo correlate nella Windows. Spazio dei nomi Networking.Sockets.

Gestione delle eccezioni

È necessario scrivere codice per gestire le eccezioni quando si chiamano metodi asincroni nella Windows. Spazio dei nomi Networking.Sockets. 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 pratici metodi helper ed enumerazioni per la gestione degli errori quando si usano socket e WebSocket. 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 StreamSocket con prossimità, Wi-Fi Direct e Bluetooth

L'app può usare streamSocket per le connessioni di rete tra dispositivi che si trovano all'interno di un intervallo di chiusura. Classi nel Windows. Lo spazio dei nomi Networking.Proximity supporta le connessioni di rete con streamSocket ai dispositivi vicini che usano Bluetooth o Wi-Fi Direct. PeerFinder e le classi correlate nella Windows. Lo spazio dei nomi Networking.Proximity consente all'app di individuare un'altra istanza dell'app in un dispositivo nelle vicinanze. Il metodo PeerFinder.FindAllPeersAsync cerca i computer peer che eseguono la stessa app all'interno dell'intervallo wireless. Il metodo PeerFinder.ConnectAsync restituisce un oggetto 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 streamSocket per le connessioni di rete tra dispositivi che usano Wi-Fi Direct con classi nel Windows. Spazio dei nomi Devices.WiFiDirect. La classe WiFiDirectDevice può essere usata per individuare altri dispositivi che dispongono di un dispositivo con supporto per Wi-Fi Direct (WFD). Il metodo WiFiDirectDevice.GetDeviceSelector ottiene l'identificatore del dispositivo per un dispositivo WFD nelle vicinanze. Dopo aver ottenuto un riferimento a un dispositivo WFD nelle vicinanze, è 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 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 DatagramSocket con Wi-Fi Direct

L'app può usare un oggetto DatagramSocket per i trasferimenti di dati di rete tra dispositivi che usano Wi-Fi Direct usando classi nel Windows. Spazio dei nomi Devices.WiFiDirect. La classe WiFiDirectDevice può essere usata per individuare altri dispositivi che dispongono di un dispositivo con supporto per Wi-Fi Direct (WFD). Il metodo WiFiDirectDevice.GetDeviceSelector ottiene l'identificatore del dispositivo per un dispositivo WFD nelle vicinanze. Dopo aver ottenuto un riferimento a un dispositivo WFD nelle vicinanze, è 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 di trigger di rete

Windows. Lo spazio dei nomi Networking.Sockets offre due tipi di trigger che l'app può usare per la rete in background: ControlChannelTrigger e SocketActivityTrigger.

Attivatori del canale di controllo

ControlChannelTrigger consente all'app di ricevere pacchetti di dati di rete e keep-alive di rete quando l'app è in background. In questo modo l'app fornisce notifiche di rete e stato in tempo reale per StreamSocket nel Windows. Spazio dei nomi 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 passare a una modalità a basso consumo per periodi di tempo, mantenendo intatte le connessioni di rete ma in uno stato a basso consumo. È 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 di 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 viene 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 vuoi essere in grado di attivare l'app in risposta al traffico di rete ricevuto.

Se l'app usa trigger di attività socket, devi specificare la funzionalità pushNotifications nel manifesto dell'app.

Scelta di un trigger di rete

Esistono alcuni scenari in cui uno dei due tipi di trigger sarebbe adatto. Quando scegli il tipo di trigger da usare nella tua app, prendi in considerazione i consigli seguenti.

Uso di socket e WebSocket 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 socket o classi WebSocket nella 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.

Uso di socket e WebSocket con isolamento di rete

L'isolamento della rete in Windows consente di controllare completamente il profilo di sicurezza di un'app in pacchetto (inclusa la piattaforma UWP e le app desktop in pacchetto SDK per app di Windows (WinUI 3).

L'isolamento della rete consente di definire l'accesso di rete necessario per ogni app scegliendo le funzionalità appropriate. Un'app senza il set di funzionalità appropriato non può usare tipi di rete specifici (Internet o rete domestica/aziendale) e richieste di rete specifiche (richieste avviate dal client in uscita o richieste non 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à. In questo modo si riduce significativamente l'impatto possibile su altre app e sul sistema operativo.

Windows applica attivamente l'isolamento di rete. Chiamata a un metodo o a qualsiasi accesso a una proprietà nel Windows. Lo spazio dei nomi Networking.Sockets (o gli 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 per un'app vengono configurate nel manifesto dell'app al momento della compilazione dell'app. Le funzionalità di rete vengono in genere aggiunte usando Visual Studio durante lo sviluppo dell'app. Possono anche essere impostati manualmente nel file manifesto dell'app usando un editor di testo. Le app desktop non in pacchetto non sono soggette all'isolamento della rete e non devono dichiarare le funzionalità di rete.

Per informazioni più dettagliate sull'isolamento di rete, vedere Come configurare le funzionalità di isolamento della rete.

Vedi anche