Compartilhar via


StreamSocketListener Classe

Definição

Dá suporte à escuta para uma conexão de rede de entrada usando um soquete de fluxo TCP ou 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
Herança
Object Platform::Object IInspectable StreamSocketListener
Atributos
Implementações

Requisitos do Windows

Família de dispositivos
Windows 10 (introduzida na 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (introduzida na v1.0)
Funcionalidades do aplicativo
bluetooth.rfcomm ID_CAP_NETWORKING [Windows Phone] internetClientServer privateNetworkClientServer

Comentários

A classe StreamSocketListener dá suporte à escuta de uma conexão de rede de entrada usando um soquete de fluxo e aceitando a conexão.

A ordem típica de operações é a seguinte:

  • Crie o StreamSocketListener.
  • Use a propriedade Control para recuperar um objeto StreamSocketListenerControl e definir a qualidade do soquete necessária.
  • Atribua o evento ConnectionReceived a um manipulador de eventos.
  • Chame o método BindServiceNameAsync ou BindEndpointAsync para associar a um número de porta TCP local ou ao nome do serviço. Para Bluetooth RFCOMM, o parâmetro de nome de serviço local é a ID do Serviço Bluetooth.
  • Quando uma conexão for recebida, use o objeto StreamSocketListenerConnectionReceivedEventArgs para recuperar a propriedade Socket com o objeto StreamSocket criado.
  • Use o objeto StreamSocket para enviar e receber dados.
  • Chame o método Close para parar de escutar e aceitar conexões de rede de entrada e liberar todos os recursos não gerenciados associados ao objeto StreamSocketListener. Todos os objetos StreamSocket criados quando uma conexão é recebida não são afetados e podem continuar a ser usados conforme necessário.

A enumeração SocketProtectionLevel permite que um servidor controle a negociação de protocolo com clientes ao usar o objeto StreamSocketListener para escutar e associar a soquetes via Bluetooth. Quando o objeto StreamSocketListener é usado por Bluetooth, os valores SocketProtectionLevel com suporte são PlainSocket, BluetoothEncryptionAllowNullAuthentication ou BluetoothEncryptionWithAuthentication. Quando o objeto StreamSocketListener é usado para escutar e associar a soquetes que não usam Bluetooth, o único valor SocketProtectionLevel com suporte é PlainSocket.

Para usar StreamSocketListener com Bluetooth, a funcionalidade do dispositivo bluetooth.rfcomm deve ser definida no manifesto do aplicativo. Para obter mais informações, consulte Como especificar recursos de dispositivo para Bluetooth.

Tratamento de exceções

Você deve escrever código para lidar com exceções ao chamar métodos assíncronos na classe StreamSocketListener. Exceções podem resultar de erros de validação de parâmetro, falhas de resolução de nomes e erros de rede. Exceções de erros de rede (perda de conectividade, falhas de conexão e falhas de servidor, por exemplo) podem ocorrer a qualquer momento. Esses erros geram exceções. Se não for tratada pelo aplicativo, uma exceção poderá fazer com que todo o aplicativo seja encerrado pelo runtime.

O namespace Windows.Networking.Sockets tem recursos que simplificam o tratamento de erros ao usar soquetes. O método GetStatus na classe SocketError pode converter o HRESULT de uma exceção para um valor de enumeração SocketErrorStatus . Eles são úteis para resolver exceções de rede específicas de uma outra forma em seu aplicativo. Um aplicativo também pode usar o HRESULT da exceção em erros de validação de parâmetro para saber mais informações sobre o erro que causou a exceção.

Para obter mais informações sobre possíveis exceções e como lidar com exceções, consulte Tratamento de exceções em aplicativos de rede.

Usando StreamSocketListener com Bluetooth

Seu aplicativo pode usar StreamSocketListener para escutar conexões de rede via Bluetooth RFCOMM. As conexões de rede por Bluetooth usam uma ID do Serviço Bluetooth como ponto de extremidade para conexões, não uma porta IP ou um nome de serviço. Para escutar Bluetooth, seu aplicativo chamaria um dos métodos BindServiceNameAsync no StreamSocketListener com o parâmetro localServiceName definido como uma ID de Serviço Bluetooth.

Para usar StreamSocketListener e StreamSocket com Bluetooth, a funcionalidade do dispositivo bluetooth.rfcomm deve ser definida no manifesto do aplicativo. Para obter mais informações, consulte o namespace Windows.Devices.Bluetooth.Rfcomm , Como especificar recursos de dispositivo para Bluetooth e o exemplo de Bluetooth Rfcomm Chat.

Usando StreamSocketListener no Windows Server 2012

Em Windows Server 2012 e Windows Server 2012 R2, o Windows.Networking.dll que implementa a maioria das classes no namespace Windows.Networking.Sockets falhará ao carregar, a menos que o recurso do Media Foundation esteja habilitado. Como resultado, os aplicativos que usam StreamSocketListener e classes de soquete relacionadas no namespace Windows.Networking.Sockets falharão se o recurso do Media Foundation estiver desabilitado. Windows Server 2012 ou Windows Server 2012 R2 é instalado com o recurso do Media Foundation desabilitado.

O recurso do Media Foundation pode ser habilitado em Windows Server 2012 ou Windows Server 2012 R2 usando Gerenciador do Servidor ou inserindo o seguinte texto em um prompt de comando ou em um script:

dism /online /enable-feature /featurename:ServerMediaFoundation Depois que o recurso do Media Foundation estiver habilitado, o usuário será solicitado a reiniciar. Depois que o computador for reiniciado, as classes para soquetes e WebSockets no namespace Windows.Networking.Sockets funcionarão conforme o esperado.

Construtores

StreamSocketListener()

Cria um novo objeto StreamSocketListener .

Propriedades

Control

Obtém dados de controle de soquete em um objeto StreamSocketListener .

Information

Obtém informações de soquete para o objeto StreamSocketListener .

Métodos

BindEndpointAsync(HostName, String)

Inicia uma operação de associação em um StreamSocketListener a um nome de host local e um nome de serviço local.

BindServiceNameAsync(String)

Inicia uma operação de associação em um StreamSocketListener a um nome de serviço local.

BindServiceNameAsync(String, SocketProtectionLevel)

Inicia uma operação de associação em um StreamSocketListener a um nome de serviço local com um SocketProtectionLevel especificado para definir em qualquer soquete associado.

BindServiceNameAsync(String, SocketProtectionLevel, NetworkAdapter)

Inicia uma operação de associação de soquete em um StreamSocketListener para um nome de serviço local em um adaptador de rede especificado com um SocketProtectionLevel especificado para definir em qualquer soquete associado.

CancelIOAsync()

Cancela leituras e gravações pendentes em um objeto StreamSocketListener .

Close()

Fecha o objeto StreamSocketListener .

Dispose()

Realiza tarefas definidas pelo aplicativo associadas à liberação ou à redefinição de recursos não gerenciados.

EnableTransferOwnership(Guid)

Permite que a tarefa em segundo plano do aplicativo seja disparada pelo agente de soquete quando o tráfego para esse StreamSocketListener chegar enquanto o aplicativo não estiver ativo.

EnableTransferOwnership(Guid, SocketActivityConnectedStandbyAction)

Permite que a tarefa em segundo plano do aplicativo seja disparada pelo agente de soquete quando o tráfego para esse StreamSocketListener chegar enquanto o sistema estiver em espera conectado.

TransferOwnership(String)

Transfere a propriedade do StreamSocketListener para o serviço de intermediação de soquete, que monitora a atividade do soquete e notifica o aplicativo por meio de uma tarefa em segundo plano se houver alguma atividade.

TransferOwnership(String, SocketActivityContext)

Transfere a propriedade do StreamSocketListener para o serviço de intermediação de soquete, que monitora a atividade do soquete e notifica o aplicativo por meio de uma tarefa em segundo plano se houver alguma atividade.

Eventos

ConnectionReceived

Um evento que indica que uma conexão foi recebida no objeto StreamSocketListener .

Aplica-se a

Confira também