Windows.Networking.Sockets Espacio de nombres
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Proporciona sockets y clases WebSockets que se usan para las comunicaciones de red y clases para las notificaciones de red en tiempo real recibidas en segundo plano para aplicaciones de Windows empaquetadas (incluidas las aplicaciones de escritorio UWP y SDK de Aplicaciones para Windows (WinUI 3).
Clases
| Nombre | Description |
|---|---|
| ControlChannelTrigger |
Permite recibir notificaciones en tiempo real en segundo plano para los objetos que establecen una conexión TCP y desean recibir notificaciones del tráfico entrante. Llame a **BackgroundExecutionManager.RequestAccessAsync** antes de usar ControlChannelTrigger. |
| DatagramSocket |
Admite la comunicación de red mediante un socket de datagrama UDP. Para obtener un ejemplo de código, consulte Sockets. |
| DatagramSocketControl |
Proporciona datos de control de socket en un objeto DatagramSocket . |
| DatagramSocketInformation |
Proporciona información de socket sobre un objeto DatagramSocket . |
| DatagramSocketMessageReceivedEventArgs |
Proporciona datos para un evento MessageReceived en un datagramSocket. |
| MessageWebSocket |
Admite la comunicación de red que permite leer y escribir mensajes completos mediante WebSocket. |
| MessageWebSocketControl |
Proporciona datos de control de socket en messageWebSocket. |
| MessageWebSocketInformation |
Proporciona información de socket sobre messageWebSocket. |
| MessageWebSocketMessageReceivedEventArgs |
Proporciona datos para un evento recibido de mensaje en un messageWebSocket. |
| ServerMessageWebSocket |
Admite la comunicación de red que permite leer y escribir mensajes completos mediante un objeto WebSocket propiedad de un servidor web. No se puede registrar para una conexión WebSocket arbitraria; en su lugar, se crea una instancia de ServerMessageWebSocket mediante código del sistema, como el portal de dispositivos (WDP) de Windows. |
| ServerMessageWebSocketControl |
Proporciona datos de control de socket en un serverMessageWebSocket. |
| ServerMessageWebSocketInformation |
Proporciona información de socket en un ServerMessageWebSocket. |
| ServerStreamWebSocket |
Admite la comunicación de red que permite leer y escribir secuencias mediante un objeto WebSocket propiedad de un servidor web. No se puede registrar para una conexión WebSocket arbitraria; en su lugar, se crea una instancia de ServerStreamWebSocket mediante código del sistema, como Windows Device Portal (WDP). |
| ServerStreamWebSocketInformation |
Proporciona información de socket en un objeto ServerStreamWebSocket . |
| SocketActivityContext |
Contexto asociado a un socket al transferir la propiedad del socket entre una aplicación y el servicio de agente de sockets. |
| SocketActivityInformation |
Proporciona información sobre el socket transferido desde el Agente de sockets. |
| SocketActivityTriggerDetails |
Objeto creado por la infraestructura de agente en segundo plano y utilizado por una aplicación para recuperar detalles cuando se produce un SocketActivityTrigger . |
| SocketError |
Proporciona el estado de error de socket para las operaciones en datagramSocket, StreamSocket o StreamSocketListener. |
| StreamSocket |
Admite la comunicación de red mediante un socket de flujo a través de TCP o Bluetooth RFCOMM en aplicaciones para UWP. |
| StreamSocketControl |
Proporciona datos de control de socket en un objeto StreamSocket . |
| StreamSocketInformation |
Proporciona información de socket sobre un objeto StreamSocket . |
| StreamSocketListener |
Admite la escucha de una conexión de red entrante mediante un socket de flujo TCP o BLUETOOTH RFCOMM. |
| StreamSocketListenerConnectionReceivedEventArgs |
Proporciona datos para un evento ConnectionReceived en un objeto StreamSocketListener . |
| StreamSocketListenerControl |
Proporciona datos de control de socket en un objeto StreamSocketListener . |
| StreamSocketListenerInformation |
Proporciona información de socket sobre un objeto StreamSocketListener . |
| StreamWebSocket |
Admite la comunicación de red que permite leer y escribir secuencias mediante WebSocket. |
| StreamWebSocketControl |
Proporciona datos de control de socket en un objeto StreamWebSocket . |
| StreamWebSocketInformation |
Proporciona información de socket sobre un objeto StreamWebSocket . |
| WebSocketClosedEventArgs |
Proporciona datos para un evento cerrado en un objeto MessageWebSocket, StreamWebSocket o IWebSocket . |
| WebSocketError |
Proporciona el estado del error de socket en un objeto MessageWebSocket o StreamWebSocket . |
| WebSocketKeepAlive |
Proporciona la capacidad de enviar un protocolo WebSocket keep-alive en un WebSocket conectado. |
| WebSocketServerCustomValidationRequestedEventArgs |
Proporciona datos para un evento ServerCustomValidationRequested en un webSocket. Este evento se produce cuando se realiza una conexión segura nueva a un WebSocket y proporciona al código la oportunidad de realizar la validación personalizada de los certificados de servidor antes de que se haya establecido la conexión. |
Estructuras
| Nombre | Description |
|---|---|
| BandwidthStatistics |
Representa información de ancho de banda para la transferencia de datos de red mediante un objeto StreamSocket, StreamWebSocket o MessageWebSocket . |
| RoundTripTimeStatistics |
Representa información de tiempo de ida y vuelta para un objeto StreamSocket . |
Interfaces
| Nombre | Description |
|---|---|
| IControlChannelTriggerEventDetails |
Objeto creado por la infraestructura de agente en segundo plano que se usa para diferenciar los desencadenadores del canal de control. |
| IControlChannelTriggerResetEventDetails |
Objeto creado por la infraestructura de agente en segundo plano para un evento ControlChannelReset para indicar que se ha restablecido un controlChannelTrigger . |
| IWebSocket |
Proporciona acceso a la comunicación de red que permite leer y escribir mediante WebSocket. |
| IWebSocketControl |
Proporciona datos de control de socket en un objeto IWebSocket . |
| IWebSocketControl2 |
Proporciona datos de control de socket en un objeto IWebSocket . Esta interfaz extiende la interfaz IWebSocketControl con una propiedad adicional. |
| IWebSocketInformation |
Proporciona información de socket sobre un objeto IWebSocket . |
| IWebSocketInformation2 |
Proporciona información de socket sobre un objeto IWebSocket . Esta interfaz extiende IWebSocketInformation con propiedades adicionales. |
Enumeraciones
| Nombre | Description |
|---|---|
| ControlChannelTriggerResetReason |
La razón por la que se restableció un controlChannelTrigger . |
| ControlChannelTriggerResourceType |
Tipo de recurso utilizado por un desencadenador de canal de control. |
| ControlChannelTriggerStatus |
Especifica si el sistema pudo completar la configuración de un objeto ControlChannelTrigger para su uso por elementos de clase en el Windows. Networking.Sockets y espacios de nombres relacionados. |
| MessageWebSocketReceiveMode |
Describe el tipo de mensaje que aceptará el cliente. |
| SocketActivityConnectedStandbyAction |
Indica si una aplicación que usa el servicio de agente de sockets puede recibir paquetes cuando el sistema va a estar conectado. |
| SocketActivityKind |
Describe el tipo de objeto de socket que se transfiere a o desde el agente de socket. |
| SocketActivityTriggerReason |
Motivo por el que se produjo un SocketActivityTrigger . |
| SocketErrorStatus |
Especifica los valores de estado de una operación de socket. |
| SocketMessageType |
Especifica el tipo de un mensaje para un objeto MessageWebSocket . |
| SocketProtectionLevel |
Especifica el nivel de cifrado que se va a usar en un objeto StreamSocket . |
| SocketQualityOfService |
Especifica la calidad del servicio para un objeto DatagramSocket o StreamSocket . |
| SocketSslErrorSeverity |
Categoría de error que se produce en una conexión SSL. |
Comentarios
Note
Compatibilidad del marco de la aplicación: El Windows. Las API Networking.Sockets están disponibles para SDK de Aplicaciones para Windows (WinUI 3) aplicaciones de escritorio y aplicaciones de escritorio win32, no solo aplicaciones para UWP. Las aplicaciones de escritorio empaquetadas usan las mismas declaraciones de funcionalidad de red que las aplicaciones para UWP. Las aplicaciones de escritorio sin empaquetar tienen acceso a la red sin restricciones y no necesitan declarar funcionalidades. Para obtener instrucciones, consulte Llamada a las API de Windows Runtime en aplicaciones de escritorio.
El Windows. El espacio de nombres Networking.Sockets proporciona clases e interfaces para las redes que usan sockets y WebSockets. Estas son las clases principales.
- DatagramSocket. Un socket de datagrama UDP que se va a usar para la comunicación de red.
- StreamSocket. Un socket de flujo que se usará para la comunicación de red entrante o saliente a través de TCP o a través de conexiones Bluetooth que usan RFCOMM.
- StreamSocketListener. Un agente de escucha de socket de flujo para escuchar las conexiones de red TCP entrantes o las conexiones Bluetooth entrantes que usan RFCOMM.
- MessageWebSocket. WebSocket basado en mensajes para leer y escribir mensajes completos para la comunicación de red. Consulte WebSockets.
- StreamWebSocket. WebSocket basado en secuencias para leer y escribir secuencias para las comunicaciones de red. Consulte WebSockets.
Estas clases principales también tienen una serie de clases de control e información relacionadas en el Windows. Espacio de nombres Networking.Sockets.
Control de excepciones
Debe escribir código para controlar las excepciones al llamar a métodos asincrónicos en el Windows. Espacio de nombres Networking.Sockets. Las excepciones pueden deberse a errores de validación de parámetros, errores de resolución de nombres y errores de red. Las excepciones de errores de red (pérdida de conectividad, errores de conexión y errores de servidor, por ejemplo) pueden producirse en cualquier momento. Estos errores provocan que se produzcan excepciones. Si no lo controla la aplicación, una excepción puede hacer que el tiempo de ejecución finalice toda la aplicación.
El Windows. El espacio de nombres Networking.Sockets tiene convenientes métodos auxiliares y enumeraciones para controlar errores al usar sockets y WebSockets. Esto puede ser útil para controlar excepciones de red específicas de forma diferente en la aplicación. Una aplicación también puede usar HRESULT de la excepción en los errores de validación de parámetros para obtener información más detallada sobre el error que provocó la excepción.
Para obtener más información sobre las posibles excepciones y cómo controlar las excepciones, consulte Control de excepciones en aplicaciones de red.
Uso de StreamSocket con proximidad, Wi-Fi Direct y Bluetooth
La aplicación puede usar StreamSocket para las conexiones de red entre dispositivos que están dentro del intervalo cercano. Clases del Windows. El espacio de nombres Networking.Proximity admite conexiones de red con streamSocket a dispositivos cercanos que usan Bluetooth o Wi-Fi Direct. PeerFinder y las clases relacionadas del Windows. El espacio de nombres Networking.Proximity permite a la aplicación detectar otra instancia de la aplicación en un dispositivo cercano. El método PeerFinder.FindAllPeersAsync busca equipos del mismo nivel que ejecutan la misma aplicación dentro del intervalo inalámbrico. El método PeerFinder.ConnectAsync devuelve un StreamSocket conectado que la aplicación puede usar para transferir datos de red con la aplicación del mismo nivel cercana. Para obtener más información, consulte Compatibilidad con proximidad y pulsación, Windows. Networking.Proximity, PeerFinder y el ejemplo De proximidad.
La aplicación también puede usar StreamSocket para las conexiones de red entre dispositivos que usan Wi-Fi Direct con clases en el Windows. Espacio de nombres Devices.WiFiDirect. La clase WiFiDirectDevice se puede usar para localizar otros dispositivos que tienen un dispositivo compatible con Wi-Fi Direct (WFD). El método WiFiDirectDevice.GetDeviceSelector obtiene el identificador del dispositivo para un dispositivo WFD cercano. Una vez que tenga una referencia a un dispositivo WFD cercano, puede llamar al método WiFiDirectDevice.GetConnectionEndpointPairs para obtener un objeto EndpointPair . El método ConnectAsync(EndpointPair) o ConnectAsync(EndpointPair, SocketProtectionLevel) de la clase StreamSocket se puede usar para establecer una conexión de socket. Para obtener más información, consulte Windows. Devices.WiFiDirect y WiFiDirectDevice.
Bluetooth usa identificadores de servicio Bluetooth como puntos de conexión para conexiones StreamSocket , no nombres de host ni direcciones IP. Para usar streamSocket con Bluetooth, la funcionalidad del dispositivo bluetooth.rfcomm debe establecerse en el manifiesto de la aplicación. Para obtener más información, consulte el Windows. Espacio de nombres Devices.Bluetooth.Rfcomm, Cómo especificar las funcionalidades del dispositivo para Bluetooth y el ejemplo de chat rfcomm de Bluetooth.
Uso de DatagramSocket con Wi-Fi Direct
La aplicación puede usar datagramSocket para las transferencias de datos de red entre dispositivos que usan Wi-Fi Direct mediante clases del Windows. Espacio de nombres Devices.WiFiDirect. La clase WiFiDirectDevice se puede usar para localizar otros dispositivos que tienen un dispositivo compatible con Wi-Fi Direct (WFD). El método WiFiDirectDevice.GetDeviceSelector obtiene el identificador del dispositivo para un dispositivo WFD cercano. Una vez que tenga una referencia a un dispositivo WFD cercano, puede llamar al método WiFiDirectDevice.GetConnectionEndpointPairs para obtener un objeto EndpointPair . Los métodos de la clase DatagramSocket se pueden usar para enviar y recibir datos al objeto EndpointPair . Para obtener más información, consulte Windows. Devices.WiFiDirect y WiFiDirectDevice.
Uso de desencadenadores de red
El Windows. El espacio de nombres Networking.Sockets ofrece dos tipos de desencadenadores que la aplicación puede usar para redes en segundo plano: ControlChannelTrigger y SocketActivityTrigger.
Desencadenadores del canal de control
ControlChannelTrigger permite a la aplicación recibir paquetes de datos de red y keepalives de red cuando la aplicación está en segundo plano. Esto permite a la aplicación proporcionar notificaciones de red y estado en tiempo real para StreamSocket en la Windows. Espacio de nombres Networking.Sockets y otras clases de red en espacios de nombres relacionados.
Las aplicaciones de red de ejecución prolongada usan desencadenadores de red (por ejemplo, una aplicación de correo electrónico) para minimizar el uso de recursos del sistema y de red. Los desencadenadores de red permiten que una aplicación se coloque en un modo de bajo consumo durante períodos de tiempo, manteniendo intactas las conexiones de red, pero en un estado de bajo consumo. Puedes establecer un intervalo keepalive para que el sistema sepa cuándo se debe reactivar la aplicación. También puede establecer un desencadenador para recibir una notificación cuando se recibe un paquete para la aplicación. Estas características de notificación pueden ayudar a ampliar la duración de la batería al usar aplicaciones de red de larga duración en dispositivos móviles.
Para obtener más información, consulte la clase ControlChannelTrigger y Cómo establecer las opciones de conectividad en segundo plano.
Desencadenadores de actividad de socket
SocketActivityTrigger permite a la aplicación recibir paquetes de datos de red cuando no está activo (incluso si se suspende o finaliza), e incluso cuando no se carga actualmente en la memoria. Se proporciona especialmente para las aplicaciones que proporcionan servicios de red, donde la aplicación se registraría como proveedor de servicios a través de DNS-SD y, a continuación, se vuelve inactiva. Un SocketActivityTrigger notificaría a la aplicación cuando un cliente se conecta al servicio, de modo que el servicio pudiera activar y proporcionar servicios solicitados. SocketActivityTrigger también se puede usar en otras circunstancias. Úselo siempre que quieras poder activar la aplicación en respuesta al tráfico de red recibido.
Si la aplicación usa desencadenadores de actividad de socket, debe especificar la funcionalidad pushNotifications en el manifiesto de la aplicación.
Elección de un desencadenador de red
Hay algunos escenarios en los que cualquier tipo de desencadenador sería adecuado. Al elegir qué tipo de desencadenador usar en la aplicación, tenga en cuenta los siguientes consejos.
- Si usa IXMLHTTPRequest2, System.Net.Http.HttpClient o System.Net.Http.HttpClientHandler, debe usar ControlChannelTrigger.
- Si usa StreamSockets habilitado para inserción, prefiera SocketActivityTrigger. Permite al sistema liberar memoria y reducir los requisitos de energía cuando la conexión no se usa activamente.
- Si quiere minimizar la superficie de memoria de la aplicación cuando no atiende activamente las solicitudes de red, prefiera SocketActivityTrigger.
- Si quieres que la aplicación pueda recibir datos mientras el sistema está en modo de espera conectado, usa SocketActivityTrigger.
Uso de sockets y WebSockets en Windows Server 2012
En Windows Server 2012 y Windows Server 2012 R2, el Windows.Networking.dll que implementa la mayoría de las clases del Windows. El espacio de nombres Networking.Sockets no se cargará a menos que la característica de Media Foundation esté habilitada. Como resultado, las aplicaciones que usan sockets o clases WebSockets en el Windows. Se producirá un error en el espacio de nombres Networking.Sockets si la característica de Media Foundation está deshabilitada. Windows Server 2012 o Windows Server 2012 R2 se instala con la característica media Foundation deshabilitada.
La característica media Foundation se puede habilitar en Windows Server 2012 o Windows Server 2012 R2 mediante Administrador del servidor o escribiendo el texto siguiente en un símbolo del sistema o en un script:
dism /online /enable-feature /featurename:ServerMediaFoundation Una vez habilitada la característica media Foundation, se le pedirá al usuario que reinicie. Una vez reiniciado el equipo, las clases para sockets y WebSockets en el Windows. El espacio de nombres Networking.Sockets funcionará según lo previsto.
Uso de sockets y WebSockets con aislamiento de red
El aislamiento de red en Windows te permite controlar completamente el perfil de seguridad de una aplicación empaquetada (incluidos UWP y aplicaciones de escritorio empaquetadas SDK de Aplicaciones para Windows (WinUI 3).
El aislamiento de red permite definir el acceso a la red necesario para cada aplicación eligiendo las funcionalidades adecuadas. Se impide que una aplicación sin el conjunto de funcionalidades adecuado use tipos de red específicos (Internet o Red de inicio/trabajo) y solicitudes de red específicas (solicitudes iniciadas por el cliente salientes o solicitudes entrantes no solicitadas y solicitudes iniciadas por el cliente saliente). La capacidad de aplicar el aislamiento de red garantiza que incluso si una aplicación se pone en peligro, la aplicación solo puede usar características (tipos de red y solicitudes de red, por ejemplo) a las que se concedió la aplicación como funcionalidades. Esto reduce significativamente el posible impacto en otras aplicaciones y en el sistema operativo.
Windows aplica activamente el aislamiento de red. Una llamada a un método o a cualquier acceso a una propiedad del Windows. Es posible que se produzca un error en el espacio de nombres Networking.Sockets (o espacios de nombres relacionados que requieren acceso a la red) si no se ha habilitado la funcionalidad de red adecuada.
Las funcionalidades de red de una aplicación se configuran en el manifiesto de la aplicación cuando se compila la aplicación. Las funcionalidades de red normalmente se agregan mediante Visual Studio al desarrollar la aplicación. También se pueden establecer manualmente en el archivo de manifiesto de la aplicación mediante un editor de texto. Las aplicaciones de escritorio sin empaquetar no están sujetas al aislamiento de red y no necesitan declarar funcionalidades de red.
Para obtener información más detallada sobre el aislamiento de red, consulte Configuración de las funcionalidades de aislamiento de red.
Consulte también
- PeerFinder
- WiFiDirectDevice
- Windows.Devices.Bluetooth.Rfcomm
- Windows.Devices.WiFiDirect
- Windows.Networking
- Windows.Networking.Connectivity
- Windows.Networking.Proximity
- Adición de compatibilidad con redes
- Conexión con sockets
- WebSockets
- Control de excepciones en aplicaciones de red
- Configuración de las funcionalidades de aislamiento de red
- Establecimiento de opciones de conectividad en segundo plano
- Especificación de funcionalidades de dispositivo para Bluetooth
- Compatibilidad con proximidad y pulsación
- Solución de problemas y depuración de conexiones de red
- SetSocketMediaStreamingMode
- Ejemplo de chat de Rfcomm de Bluetooth
- Ejemplo datagramSocket
- Ejemplo de StreamWebSocket de ControlChannelTrigger
- Ejemplo de socket TCP de ControlChannelTrigger
- Ejemplo de proximidad
- Ejemplo de StreamSocket
- Ejemplo datagramSocket
- Ejemplo de WebSocket
- Ejemplo de StreamSocket
- ejemplo deWi-Fi Direct
- Wi-Fi ejemplo de servicios directos (Windows 10)
- Ejemplo de socket desencadenador de flujo