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 de Windows empacotados (incluindo aplicativos de área de trabalho UWP e SDK do Aplicativo Windows (WinUI 3).

Classes

Nome Description
ControlChannelTrigger

Permite que as 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.

DatagramSocket

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

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

DatagramSocketControl

Fornece dados de controle de soquete em um objeto DatagramSocket .

DatagramSocketInformation

Fornece informações de soquete sobre 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 de propriedade de 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 do Dispositivo 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 de propriedade de 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 do Dispositivo 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 de segundo plano e usado por um aplicativo para recuperar detalhes quando ocorre um SocketActivityTrigger .

SocketError

Fornece o status de erro do 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 de 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 o status de erro do soquete em um objeto MessageWebSocket ou StreamWebSocket .

WebSocketKeepAlive

Fornece a capacidade de enviar um protocolo WebSocket em manutenção 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 oferece ao seu código a oportunidade de executar a validação personalizada dos certificados do servidor antes que a conexão seja estabelecida.

Estruturas

Nome Description
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 ida e volta para um objeto StreamSocket .

Interfaces

Nome Description
IControlChannelTriggerEventDetails

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

IControlChannelTriggerResetEventDetails

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

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 sobre um objeto IWebSocket .

IWebSocketInformation2

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

Enumerações

Nome Description
ControlChannelTriggerResetReason

O motivo pelo qual um ControlChannelTrigger foi redefinido.

ControlChannelTriggerResourceType

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

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.

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 para ou do agente de soquete.

SocketActivityTriggerReason

O motivo pelo qual ocorreu um SocketActivityTrigger .

SocketErrorStatus

Especifica valores de status 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

Observação

Compatibilidade da estrutura do aplicativo: O Windows. As APIs Networking.Sockets estão disponíveis para aplicativos de área de trabalho do SDK do Aplicativo Windows (WinUI 3) e aplicativos da área de trabalho Win32, não apenas aplicativos UWP. Os aplicativos de área de trabalho empacotados usam as mesmas declarações de funcionalidade de rede que os aplicativos UWP. Os aplicativos de área de trabalho não empacotados têm acesso irrestrito à rede e não precisam declarar recursos. Para obter diretrizes, consulte ApIs de chamada Windows Runtime em aplicativos da área de trabalho.

O Windows. O namespace 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 Windows. Namespace Networking.Sockets.

Tratamento de exceções

Você deve escrever código para lidar com exceções ao chamar métodos assíncronos no Windows. Namespace Networking.Sockets. As 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 resultam na geração de exceções. Se não for tratada pelo aplicativo, uma exceção poderá fazer com que todo o aplicativo seja encerrado pelo runtime.

O Windows. O namespace Networking.Sockets tem métodos auxiliares convenientes e enumerações para lidar com erros ao usar soquetes e WebSockets. Isso pode ser útil para lidar com exceções de rede específicas de forma diferente 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 detalhadas 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. Classes no Windows. O namespace Networking.Proximity dá 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 Windows. O namespace Networking.Proximity permite 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 à proximidade e toque, 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 Windows. Namespace Devices.WiFiDirect. A classe WiFiDirectDevice pode ser usada para localizar outros dispositivos que têm 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 de 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 Windows. Namespace Devices.Bluetooth.Rfcomm, How to specify device capabilities for Bluetooth e the Bluetooth Rfcomm Chat sample.

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 Windows. Namespace Devices.WiFiDirect. A classe WiFiDirectDevice pode ser usada para localizar outros dispositivos que têm 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 Windows. O namespace 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 notificações de rede e status em tempo real para StreamSocket no Windows. Namespace Networking.Sockets e outras classes de rede em namespaces relacionados.

Os gatilhos de rede são usados por aplicativos de rede de execução longa (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 removido para 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 vida útil 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 do soquete

O SocketActivityTrigger permite que seu aplicativo receba pacotes de dados de rede quando ele não estiver ativo (mesmo que seja suspenso ou encerrado) e mesmo quando ele não está 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 poder 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

Há alguns cenários em que qualquer tipo de gatilho seria adequado. Ao escolher qual tipo de gatilho usar em seu aplicativo, considere os conselhos a seguir.

Usando soquetes e WebSockets no Windows Server 2012

No Windows Server 2012 e Windows Server 2012 R2, o Windows.Networking.dll que implementa a maioria das classes no Windows. O namespace Networking.Sockets falhará ao carregar, a menos que o recurso do Media Foundation esteja habilitado. Como resultado, os aplicativos que usam soquetes ou classes WebSockets no Windows. O namespace Networking.Sockets falhará se o recurso do Media Foundation estiver desabilitado. instalações Windows Server 2012 ou Windows Server 2012 R2 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 é reiniciado, classes para soquetes e WebSockets no Windows. O namespace Networking.Sockets funcionará conforme o esperado.

Usando soquetes e WebSockets com isolamento de rede

O isolamento de rede no Windows permite controlar totalmente o perfil de segurança de um aplicativo empacotado (incluindo aplicativos de área de trabalho UWP e SDK do Aplicativo Windows empacotados (WinUI 3).

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 fique comprometido, o aplicativo só poderá 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.

Windows impõe ativamente o isolamento de rede. Uma chamada para um método ou qualquer acesso a uma propriedade no Windows. O namespace 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 de um aplicativo são configurados no manifesto do aplicativo quando o aplicativo é criado. Os recursos de rede geralmente são adicionados usando Visual Studio ao desenvolver seu aplicativo. Eles também podem ser definidos manualmente no arquivo de manifesto do aplicativo usando um editor de texto. Os aplicativos de área de trabalho não empacotados não estão sujeitos ao isolamento de rede e não precisam declarar recursos de rede.

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

Confira também