Partilhar via


Windows.Networking.Sockets Namespace

Fornece classes de soquetes e WebSockets a serem usadas para comunicações de rede e classes para notificações de rede em tempo real recebidas em segundo plano para aplicativos UWP.

Classes

ControlChannelTrigger

Permite que notificações em tempo real sejam recebidas em segundo plano para objetos que estabelecem uma conexão TCP e desejam ser notificados sobre o tráfego de entrada.

Chame **BackgroundExecutionManager.RequestAccessAsync** antes de usar ControlChannelTrigger.

Observação

Não há suporte para essa classe em Windows Phone.

DatagramSocket

Dá suporte à comunicação de rede usando um soquete de datagrama UDP.

Para obter um exemplo de código, consulte Soquetes.

DatagramSocketControl

Fornece dados de controle de soquete em um objeto DatagramSocket .

DatagramSocketInformation

Fornece informações de soquete em um objeto DatagramSocket .

DatagramSocketMessageReceivedEventArgs

Fornece dados para um evento MessageReceived em um DatagramSocket.

MessageWebSocket

Dá suporte à comunicação de rede que permite ler e gravar mensagens inteiras usando um WebSocket.

MessageWebSocketControl

Fornece dados de controle de soquete em um MessageWebSocket.

MessageWebSocketInformation

Fornece informações de soquete em um MessageWebSocket.

MessageWebSocketMessageReceivedEventArgs

Fornece dados para um evento recebido por mensagem em um MessageWebSocket.

ServerMessageWebSocket

Dá suporte à comunicação de rede que permite ler e gravar mensagens inteiras usando um objeto WebSocket pertencente a um servidor Web. Você não pode se registrar para uma conexão WebSocket arbitrária; Em vez disso, uma instância de ServerMessageWebSocket é criada pelo código do sistema, como o WDP ( Portal de Dispositivos do Windows ).

ServerMessageWebSocketControl

Fornece dados de controle de soquete em um ServerMessageWebSocket.

ServerMessageWebSocketInformation

Fornece informações de soquete em um ServerMessageWebSocket.

ServerStreamWebSocket

Dá suporte à comunicação de rede que permite a leitura e gravação de fluxos usando um objeto WebSocket pertencente a um servidor Web. Você não pode se registrar para uma conexão WebSocket arbitrária; Em vez disso, uma instância de ServerStreamWebSocket é criada pelo código do sistema, como o WDP ( Portal de Dispositivos do Windows ).

ServerStreamWebSocketInformation

Fornece informações de soquete em um objeto ServerStreamWebSocket .

SocketActivityContext

O contexto associado a um soquete durante a transferência da propriedade do soquete entre um aplicativo e o serviço de intermediação de soquete.

SocketActivityInformation

Fornece informações sobre o soquete transferido do Socket Broker.

SocketActivityTriggerDetails

Um objeto instanciado pela infraestrutura do agente em segundo plano e usado por um aplicativo para recuperar detalhes quando ocorre um SocketActivityTrigger .

SocketError

Fornece status de erro de soquete para operações em um DatagramSocket, StreamSocket ou StreamSocketListener.

StreamSocket

Dá suporte à comunicação de rede usando um soquete de fluxo por TCP ou Bluetooth RFCOMM em aplicativos UWP.

StreamSocketControl

Fornece dados de controle de soquete em um objeto StreamSocket .

StreamSocketInformation

Fornece informações de soquete em um objeto StreamSocket .

StreamSocketListener

Dá suporte à escuta para uma conexão de rede de entrada usando um soquete de fluxo TCP ou Bluetooth RFCOMM.

StreamSocketListenerConnectionReceivedEventArgs

Fornece dados para um evento ConnectionReceived em um objeto StreamSocketListener .

StreamSocketListenerControl

Fornece dados de controle de soquete em um objeto StreamSocketListener .

StreamSocketListenerInformation

Fornece informações de soquete em um objeto StreamSocketListener .

StreamWebSocket

Dá suporte à comunicação de rede que permite a leitura e gravação de fluxos usando um WebSocket.

StreamWebSocketControl

Fornece dados de controle de soquete em um objeto StreamWebSocket .

StreamWebSocketInformation

Fornece informações de soquete em um objeto StreamWebSocket .

WebSocketClosedEventArgs

Fornece dados para um evento fechado em um objeto MessageWebSocket, StreamWebSocket ou IWebSocket .

WebSocketError

Fornece status de erro de soquete em um objeto MessageWebSocket ou StreamWebSocket.

WebSocketKeepAlive

Fornece a capacidade de enviar um protocolo WebSocket keep alive em um WebSocket conectado.

WebSocketServerCustomValidationRequestedEventArgs

Fornece dados para um evento ServerCustomValidationRequested em um WebSocket. Esse evento ocorre quando uma nova conexão segura com um WebSocket está sendo feita e dá ao seu código a oportunidade de executar a validação personalizada dos certificados do servidor antes que a conexão seja estabelecida.

Estruturas

BandwidthStatistics

Representa informações de largura de banda para transferência de dados de rede usando um objeto StreamSocket, StreamWebSocket ou MessageWebSocket .

RoundTripTimeStatistics

Representa informações de tempo de viagem de ida e volta para um objeto StreamSocket .

Interfaces

IControlChannelTriggerEventDetails

Um objeto instanciado pela infraestrutura do agente de segundo plano que é usada para diferenciar gatilhos de canal de controle.

Observação

Não há suporte para essa interface no Windows Phone.

IControlChannelTriggerResetEventDetails

Um objeto instanciado pela infraestrutura do agente em segundo plano para um evento ControlChannelReset para indicar que um ControlChannelTrigger foi redefinido.

Observação

Não há suporte para essa interface no Windows Phone.

IWebSocket

Fornece acesso à comunicação de rede que permite ler e gravar usando um WebSocket.

IWebSocketControl

Fornece dados de controle de soquete em um objeto IWebSocket .

IWebSocketControl2

Fornece dados de controle de soquete em um objeto IWebSocket . Essa interface estende a interface IWebSocketControl com uma propriedade adicional.

IWebSocketInformation

Fornece informações de soquete em um objeto IWebSocket .

IWebSocketInformation2

Fornece informações de soquete em um objeto IWebSocket . Essa interface estende IWebSocketInformation com propriedades adicionais.

Enumerações

ControlChannelTriggerResetReason

O motivo pelo qual um ControlChannelTrigger foi redefinido.

Observação

Não há suporte para essa enumeração em Windows Phone.

ControlChannelTriggerResourceType

O tipo de recurso usado por um gatilho de canal de controle.

Observação

Não há suporte para essa enumeração em Windows Phone.

ControlChannelTriggerStatus

Especifica se o sistema foi capaz de concluir a configuração de um objeto ControlChannelTrigger para uso por elementos de classe no Windows.Networking.Sockets e namespaces relacionados.

Observação

Não há suporte para essa enumeração em Windows Phone.

MessageWebSocketReceiveMode

Descreve o tipo de mensagem que o cliente aceitará.

SocketActivityConnectedStandbyAction

Indica se um aplicativo que usa o serviço de intermediação de soquete pode receber pacotes quando o sistema for para o stand by conectado.

SocketActivityKind

Descreve o tipo de objeto de soquete que está sendo transferido de ou para o agente de soquete.

SocketActivityTriggerReason

O motivo pelo qual ocorreu um SocketActivityTrigger .

SocketErrorStatus

Especifica status valores para uma operação de soquete.

SocketMessageType

Especifica o tipo de uma mensagem para um objeto MessageWebSocket .

SocketProtectionLevel

Especifica o nível de criptografia a ser usado em um objeto StreamSocket .

SocketQualityOfService

Especifica a qualidade do serviço para um objeto DatagramSocket ou StreamSocket .

SocketSslErrorSeverity

A categoria de erro que ocorre em uma conexão SSL.

Comentários

O namespace Windows.Networking.Sockets fornece classes e interfaces para rede que usam soquetes e WebSockets. Aqui estão as classes primárias.

  • DatagramSocket. Um soquete de datagrama UDP a ser usado para comunicação de rede.
  • StreamSocket. Um soquete de fluxo a ser usado para comunicação de rede de entrada ou saída por TCP ou por conexões Bluetooth que usam RFCOMM.
  • StreamSocketListener. Um ouvinte de soquete de fluxo para escutar conexões de rede TCP de entrada ou conexões Bluetooth de entrada que usam RFCOMM.
  • MessageWebSocket. Um WebSocket baseado em mensagem para ler e gravar mensagens inteiras para comunicação de rede. Consulte WebSockets.
  • StreamWebSocket. Um WebSocket baseado em fluxo para ler e gravar fluxos para comunicações de rede. Consulte WebSockets.

Essas classes primárias também têm várias classes de controle e informações relacionadas no namespace Windows.Networking.Sockets.

Tratamento de exceções

Você deve escrever código para lidar com exceções ao chamar métodos assíncronos no namespace Windows.Networking.Sockets. 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 métodos auxiliares e enumerações práticas para resolver erros durante o uso de soquetes e WebSockets. 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 StreamSocket com proximidade, Wi-Fi Direct e Bluetooth

Seu aplicativo pode usar um StreamSocket para conexões de rede entre dispositivos que estão ao alcance próximo. As classes no namespace Windows.Networking.Proximity dão suporte a conexões de rede com um StreamSocket para dispositivos próximos que usam Bluetooth ou Wi-Fi Direct. O PeerFinder e as classes relacionadas no namespace Windows.Networking.Proximity permitem que seu aplicativo descubra outra instância do aplicativo em um dispositivo próximo. O método PeerFinder.FindAllPeersAsync procura computadores pares que executam o mesmo aplicativo dentro do intervalo sem fio. O método PeerFinder.ConnectAsync retorna um StreamSocket conectado que seu aplicativo pode usar para transferir dados de rede com o aplicativo par próximo. Para obter mais informações, consulte Suporte a proximidade e toques, Windows.Networking.Proximity, PeerFinder e o exemplo de proximidade.

Seu aplicativo também pode usar um StreamSocket para conexões de rede entre dispositivos que usam Wi-Fi Direct com classes no namespace Windows.Devices.WiFiDirect . A classe WiFiDirectDevice pode ser usada para localizar outros dispositivos que tenham um dispositivo compatível com Wi-Fi Direct (WFD). O método WiFiDirectDevice.GetDeviceSelector obtém o identificador do dispositivo para um dispositivo WFD próximo. Depois de fazer referência a um dispositivo WFD próximo, você pode chamar o método WiFiDirectDevice.GetConnectionEndpointPairs para obter um objeto EndpointPair . O método ConnectAsync(EndpointPair) ou ConnectAsync(EndpointPair, SocketProtectionLevel) na classe StreamSocket pode ser usado para estabelecer uma conexão de soquete. Para obter mais informações, consulte Windows.Devices.WiFiDirect e WiFiDirectDevice.

O Bluetooth usa IDs do Serviço Bluetooth como pontos de extremidade para conexões StreamSocket , não nomes de host ou endereços IP. Para usar um 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 DatagramSocket com Wi-Fi Direct

Seu aplicativo pode usar um DatagramSocket para transferências de dados de rede entre dispositivos que usam Wi-Fi Direct usando classes no namespace Windows.Devices.WiFiDirect . A classe WiFiDirectDevice pode ser usada para localizar outros dispositivos que tenham um dispositivo compatível com Wi-Fi Direct (WFD). O método WiFiDirectDevice.GetDeviceSelector obtém o identificador do dispositivo para um dispositivo WFD próximo. Depois de fazer referência a um dispositivo WFD próximo, você pode chamar o método WiFiDirectDevice.GetConnectionEndpointPairs para obter um objeto EndpointPair . Métodos na classe DatagramSocket podem ser usados para enviar e receber dados para o objeto EndpointPair . Para obter mais informações, consulte Windows.Devices.WiFiDirect e WiFiDirectDevice.

Usando gatilhos de rede

O namespace Windows.Networking.Sockets oferece dois tipos de gatilhos que seu aplicativo pode usar para rede em segundo plano: ControlChannelTrigger e SocketActivityTrigger.

Gatilhos de canal de controle

O ControlChannelTrigger permite que seu aplicativo receba pacotes de dados de rede e keepalives de rede quando o aplicativo estiver em segundo plano. Isso permite que seu aplicativo forneça status em tempo real e notificações de rede para StreamSocket no namespace Windows.Networking.Sockets e outras classes de rede em namespaces relacionados.

Os gatilhos de rede são usados por aplicativos de rede de longa execução (por exemplo, um aplicativo de email) para minimizar o uso de recursos de rede e sistema. Os gatilhos de rede permitem que um aplicativo seja solto em um modo de baixa potência por períodos de tempo, mantendo as conexões de rede intactas, mas em um estado de baixa potência. Você pode definir um intervalo keepalive para informar o sistema quando o aplicativo deve ser ativado. Você também pode definir um gatilho para ser notificado quando um pacote é recebido para o aplicativo. Esses recursos de notificação podem ajudar a estender a duração da bateria ao usar aplicativos de rede de longa execução em dispositivos móveis.

Para obter mais informações, consulte a classe ControlChannelTrigger e Como definir opções de conectividade em segundo plano.

Gatilhos de atividade de soquete

O SocketActivityTrigger permite que seu aplicativo receba pacotes de dados de rede quando ele não estiver ativo (mesmo que esteja suspenso ou encerrado) e mesmo quando ele não estiver carregado na memória no momento. Ele é fornecido especialmente para aplicativos que fornecem serviços de rede, em que o aplicativo se registraria como um provedor de serviços por meio do DNS-SD e, em seguida, se tornaria inativo. Um SocketActivityTrigger notificaria o aplicativo quando um cliente se conectasse ao serviço, para que o serviço pudesse ativar e fornecer serviços solicitados. SocketActivityTrigger também pode ser usado em outras circunstâncias. Use-o sempre que quiser ser capaz de ativar seu aplicativo em resposta ao tráfego de rede recebido.

Se o aplicativo usar gatilhos de atividade de soquete, você deverá especificar a funcionalidade pushNotifications no manifesto do aplicativo.

Escolhendo um gatilho de rede

Existem alguns cenários onde qualquer tipo de gatilho seria adequado. Ao escolher o tipo de gatilho para usar em seu aplicativo, considere o seguinte aviso.

Usando soquetes e WebSockets no Windows Server 2012

No Windows Server 2012 e no Windows Server 2012 R2, o Windows.Networking.dll que implementa a maioria das classes no namespace Windows.Networking.Sockets não será carregado, a menos que o recurso do Media Foundation esteja habilitado. Como resultado, os aplicativos que usam soquetes ou classes WebSockets no namespace Windows.Networking.Sockets falharão se o recurso do Media Foundation estiver desabilitado. O Windows Server 2012 ou Windows Server 2012 R2 é instalado com o recurso do Media Foundation desabilitado.

O recurso do Media Foundation pode ser habilitado no Windows Server 2012 ou no 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.

Usando soquetes e WebSockets com isolamento de rede

O isolamento de rede no Windows 8 permite controlar totalmente o perfil de segurança de um aplicativo UWP.

O isolamento de rede permite definir o acesso à rede necessário para cada aplicativo escolhendo os recursos apropriados. Um aplicativo sem o conjunto de recursos apropriado é impedido de usar tipos de rede específicos (Internet ou Rede Inicial/Trabalho) e solicitações de rede específicas (solicitações iniciadas pelo cliente de saída ou solicitações não solicitadas de entrada e solicitações iniciadas pelo cliente de saída). A capacidade de impor o isolamento de rede garante que, mesmo que um aplicativo seja comprometido, o aplicativo só pode usar recursos (tipos de rede e solicitações de rede, por exemplo) que o aplicativo foi concedido como funcionalidades. Isso reduz significativamente o possível impacto em outros aplicativos e no sistema operacional.

O Windows 8 impõe ativamente o isolamento de rede. Uma chamada para um método ou qualquer acesso a uma propriedade no namespace Windows.Networking.Sockets (ou namespaces relacionados que exigem acesso à rede) poderá falhar se a funcionalidade de rede apropriada não tiver sido habilitada.

Os recursos de rede para um aplicativo são configurados no manifesto do aplicativo quando o aplicativo é compilado. Os recursos de rede geralmente são adicionados usando o Visual Studio quando você desenvolve seu aplicativo. Eles também podem ser definidos manualmente no arquivo de manifesto do aplicativo usando um editor de texto.

Para obter informações mais detalhadas sobre o isolamento de rede, consulte Como configurar recursos de isolamento de rede.

Confira também