Windows.Networking.Sockets Espacio de nombres

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.

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