StreamSocketListener Clase

Definición

Admite la escucha de una conexión de red entrante mediante un socket de flujo TCP o Bluetooth RFCOMM.

public ref class StreamSocketListener sealed : IClosable
/// [Windows.Foundation.Metadata.Activatable(65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class StreamSocketListener final : IClosable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
class StreamSocketListener final : IClosable
[Windows.Foundation.Metadata.Activatable(65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class StreamSocketListener : System.IDisposable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
public sealed class StreamSocketListener : System.IDisposable
function StreamSocketListener()
Public NotInheritable Class StreamSocketListener
Implements IDisposable
Herencia
Object Platform::Object IInspectable StreamSocketListener
Atributos
Implementaciones

Requisitos de Windows

Familia de dispositivos
Windows 10 (se introdujo en la versión 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (se introdujo en la versión v1.0)
Características de aplicaciones
bluetooth.rfcomm ID_CAP_NETWORKING [Windows Phone] internetClientServer privateNetworkClientServer

Comentarios

La clase StreamSocketListener admite la escucha de una conexión de red entrante mediante un socket de flujo y la aceptación de la conexión.

El orden típico de las operaciones es el siguiente:

  • Cree streamSocketListener.
  • Utilice la propiedad Control para recuperar un objeto StreamSocketListenerControl y establecer la calidad de socket del servicio necesario.
  • Asigne el evento ConnectionReceived a un controlador de eventos.
  • Llame al método BindServiceNameAsync o BindEndpointAsync para enlazar con un número de puerto TCP local o un nombre de servicio. En el caso de RFCOMM de Bluetooth, el parámetro de nombre del servicio local es el identificador del servicio Bluetooth.
  • Cuando se recibe una conexión, utilice el objeto StreamSocketListenerConnectionReceivedEventArgs para recuperar la propiedad Socket con el objeto StreamSocket creado.
  • Use el objeto StreamSocket para enviar y recibir datos.
  • Llame al método Close para dejar de escuchar y aceptar conexiones de red entrantes y liberar todos los recursos no administrados asociados al objeto StreamSocketListener. Los objetos StreamSocket creados cuando se recibe una conexión no se ven afectados y se pueden seguir usando según sea necesario.

La enumeración SocketProtectionLevel permite a un servidor controlar la negociación de protocolos con clientes cuando se usa el objeto StreamSocketListener para escuchar y enlazar a sockets a través de Bluetooth. Cuando se usa el objeto StreamSocketListener a través de Bluetooth, los valores de SocketProtectionLevel admitidos son PlainSocket, BluetoothEncryptionAllowNullAuthentication o BluetoothEncryptionWithAuthentication. Cuando el objeto StreamSocketListener se usa para escuchar y enlazar a sockets que no usan Bluetooth, el único valor de SocketProtectionLevel admitido es PlainSocket.

Para usar StreamSocketListener con Bluetooth, la funcionalidad del dispositivo bluetooth.rfcomm debe establecerse en el manifiesto de la aplicación. Para obtener más información, consulte Cómo especificar funcionalidades de dispositivo para Bluetooth.

Control de excepciones

Debe escribir código para controlar excepciones al llamar a métodos asincrónicos en la clase StreamSocketListener. 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 características que simplifican el control de errores al usar sockets. El método GetStatus de la clase SocketError puede convertir hrESULT de una excepción a un valor de enumeración SocketErrorStatus . 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 StreamSocketListener con Bluetooth

La aplicación puede usar StreamSocketListener para escuchar las conexiones de red a través de RFCOMM bluetooth. Las conexiones de red a través de Bluetooth usan un identificador de servicio Bluetooth como punto de conexión para las conexiones, no un puerto IP ni un nombre de servicio. Para escuchar Bluetooth, la aplicación llamaría a uno de los métodos BindServiceNameAsync en StreamSocketListener con el parámetro localServiceName establecido en un identificador de servicio Bluetooth.

Para usar StreamSocketListener y 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 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 StreamSocketListener 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 StreamSocketListener y las clases de socket relacionadas 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 de 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.

Constructores

StreamSocketListener()

Crea un nuevo objeto StreamSocketListener .

Propiedades

Control

Obtiene los datos de control de socket en un objeto StreamSocketListener .

Information

Obtiene información de socket para el objeto StreamSocketListener .

Métodos

BindEndpointAsync(HostName, String)

Inicia una operación de enlace en streamSocketListener en un nombre de host local y un nombre de servicio local.

BindServiceNameAsync(String)

Inicia una operación de enlace en streamSocketListener en un nombre de servicio local.

BindServiceNameAsync(String, SocketProtectionLevel)

Inicia una operación de enlace en streamSocketListener en un nombre de servicio local con un socketProtectionLevel especificado para establecer en los sockets enlazados.

BindServiceNameAsync(String, SocketProtectionLevel, NetworkAdapter)

Inicia una operación de enlace de socket en streamSocketListener en un nombre de servicio local en un adaptador de red especificado con un socketProtectionLevel especificado para establecer en los sockets enlazados.

CancelIOAsync()

Cancela las lecturas y escrituras pendientes en un objeto StreamSocketListener .

Close()

Cierra el objeto StreamSocketListener .

Dispose()

Realiza tareas definidas por la aplicación asociadas a la liberación o al restablecimiento de recursos no administrados.

EnableTransferOwnership(Guid)

Permite que el agente de sockets desencadene la tarea en segundo plano de la aplicación cuando llega el tráfico para este StreamSocketListener mientras la aplicación no está activa.

EnableTransferOwnership(Guid, SocketActivityConnectedStandbyAction)

Permite que el agente de sockets desencadene la tarea en segundo plano de la aplicación cuando llega el tráfico para este StreamSocketListener mientras el sistema está en espera conectado.

TransferOwnership(String)

Transfiere la propiedad de StreamSocketListener al servicio de brokering de sockets, que supervisa la actividad del socket y notifica a la aplicación a través de una tarea en segundo plano si hay alguna actividad.

TransferOwnership(String, SocketActivityContext)

Transfiere la propiedad de StreamSocketListener al servicio de brokering de sockets, que supervisa la actividad del socket y notifica a la aplicación a través de una tarea en segundo plano si hay alguna actividad.

Eventos

ConnectionReceived

Evento que indica que se recibió una conexión en el objeto StreamSocketListener .

Se aplica a

Consulte también