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 usarán para las comunicaciones de red y las clases para las notificaciones de red en tiempo real recibidas en segundo plano para las aplicaciones para UWP.
Clases
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. Nota Esta clase no se admite en Windows Phone. |
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 un WebSocket. |
MessageWebSocketControl |
Proporciona datos de control de socket en messageWebSocket. |
MessageWebSocketInformation |
Proporciona información de socket en un 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 arbitraria de WebSocket; en su lugar, el código del sistema crea una instancia de ServerMessageWebSocket , como el Portal de dispositivos Windows (WDP). |
ServerMessageWebSocketControl |
Proporciona datos de control de socket en un serverMessageWebSocket. |
ServerMessageWebSocketInformation |
Proporciona información de socket en 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 arbitraria de WebSocket; en su lugar, el código del sistema crea una instancia de ServerStreamWebSocket , como el Portal de dispositivos Windows (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 usado 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 un 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 de 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
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
IControlChannelTriggerEventDetails |
Objeto creado por la infraestructura de agente en segundo plano que se usa para diferenciar los desencadenadores del canal de control. Nota Esta interfaz no se admite en Windows Phone. |
IControlChannelTriggerResetEventDetails |
Objeto creado por la infraestructura de agente en segundo plano para un evento ControlChannelReset para indicar que se ha restablecido un controlChannelTrigger . Nota Esta interfaz no se admite en Windows Phone. |
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
ControlChannelTriggerResetReason |
La razón por la que se restableció un ControlChannelTrigger . Nota Esta enumeración no se admite en Windows Phone. |
ControlChannelTriggerResourceType |
Tipo de recurso utilizado por un desencadenador de canal de control. Nota Esta enumeración no se admite en Windows Phone. |
ControlChannelTriggerStatus |
Especifica si el sistema pudo completar la configuración de un objeto ControlChannelTrigger para su uso por elementos de clase en los espacios de nombres Windows.Networking.Sockets y relacionados. Nota Esta enumeración no se admite en Windows Phone. |
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 pasa a estar conectado. |
SocketActivityKind |
Describe el tipo de objeto de socket que se transfiere a o desde el agente de sockets. |
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
El espacio de nombres Windows.Networking.Sockets proporciona clases e interfaces para 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. Socket de flujo que se va a 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 flujos 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 espacio de nombres Windows.Networking.Sockets.
Control de excepciones
Debe escribir código para controlar las excepciones al llamar a métodos asincrónicos en el espacio de nombres Windows.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 los errores de red (pérdida de conectividad, errores de conexión y errores de servidor, por ejemplo) pueden producirse en cualquier momento. Estos errores hacen que se arrojen excepciones. Si la aplicación no la controla, una excepción puede hacer que el tiempo de ejecución finalice toda la aplicación.
El espacio de nombres Windows.Networking.Sockets tiene enumeraciones y métodos auxiliares convenientes para controlar errores al usar sockets y WebSockets. Esto puede ser útil para controlar de un modo diferente excepciones de red específicas 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 de cierre. Las clases del espacio de nombres Windows.Networking.Proximity admiten conexiones de red con streamSocket a dispositivos cercanos que usan Bluetooth o Wi-Fi Direct. PeerFinder y las clases relacionadas del espacio de nombres Windows.Networking.Proximity permiten 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, vea 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 espacio de nombres Windows.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 de dispositivo de 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, consulta 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, consulta el espacio de nombres Windows.Devices.Bluetooth.Rfcomm , Cómo especificar las funcionalidades del dispositivo para Bluetooth y el ejemplo de Chat de Rfcomm de Bluetooth.
Uso de DatagramSocket con Wi-Fi Direct
La aplicación puede usar un DatagramSocket para las transferencias de datos de red entre dispositivos que usan Wi-Fi Direct mediante clases en el espacio de nombres Windows.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 de dispositivo de 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, consulta Windows.Devices.WiFiDirect y WiFiDirectDevice.
Uso de desencadenadores de red
El espacio de nombres Windows.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 el espacio de nombres Windows.Networking.Sockets y otras clases de red en espacios de nombres relacionados.
Las aplicaciones de red de larga duración usan desencadenadores de red (por ejemplo, una aplicación de correo electrónico) para minimizar el uso de recursos de red y del sistema. Los desencadenadores de red permiten que una aplicación caiga 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, vea 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 está cargado actualmente en 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 volvería inactiva. Un SocketActivityTrigger notificaría a la aplicación cuando un cliente conectado 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 sockets, debes especificar la funcionalidad pushNotifications en el manifiesto de la aplicación.
Elección de un desencadenador de red
Hay algunos escenarios donde cualquier tipo de desencadenador sería adecuado. Cuando elijas qué tipo de desencadenador usar en tu aplicación, ten en cuenta lo siguiente.
- SI estás usando IXMLHTTPRequest2, System.Net.Http.HttpClient o System.Net.Http.HttpClientHandler, debes 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 quieres minimizar la superficie de memoria de la aplicación cuando no está dando servicio activamente a las solicitudes de red, prefiere SocketActivityTrigger.
- Si quieres que tu 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 espacio de nombres Windows.Networking.Sockets no se cargará a menos que la característica media Foundation esté habilitada. Como resultado, las aplicaciones que usan sockets o clases WebSockets en el espacio de nombres Windows.Networking.Sockets producirán un error si la característica 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 se reinicie. Una vez reiniciado el equipo, las clases para sockets y WebSockets en el espacio de nombres Windows.Networking.Sockets funcionarán según lo previsto.
Uso de sockets y WebSockets con aislamiento de red
El aislamiento de red en Windows 8 te permite controlar completamente el perfil de seguridad de una aplicación para UWP.
El aislamiento de red permite definir el acceso de 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 saliente 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 8 aplica activamente el aislamiento de red. Se puede producir un error en una llamada a un método o a cualquier acceso a una propiedad en el espacio de nombres Windows.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 para una aplicación se configuran en su manifiesto al crear la aplicación. Las funcionalidades de red se suelen agregar 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.
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
- Procedimiento para configurar las funcionalidades de aislamiento de red
- Establecimiento de opciones de conectividad en segundo plano
- Cómo especificar funcionalidades de dispositivos 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
- Muestra de DatagramSocket
- Ejemplo de StreamWebSocket de ControlChannelTrigger
- Ejemplo de socket TCP de ControlChannelTrigger
- Muestra de proximidad
- Muestra StreamSocket
- Muestra de DatagramSocket
- Ejemplo de WebSocket
- Muestra StreamSocket
- ejemplo de Wi-Fi Direct
- ejemplo de servicios de Wi-Fi Direct (Windows 10)
- Ejemplo de socket de socket de flujo de desencadenador de actividad de socket