Detectar o estado da rede (ligado - desligado) em C #
-
06-09-2019 - |
Pergunta
Estou precisando de um pedaço de código que pode detectar se uma conexão de rede é ligado ou desligado. O estado conectado significaria um cabo foi conectado na conexão Ethernet. Um estado desconectado significaria que não há cabo conectado.
Eu não posso usar a interface WMI devido ao fato de que eu estou rodando em Windows CE. Eu não me importo invocando a API Win32 mas lembre-se que eu estou usando Windows CE e em execução no Compact Framework.
Solução
Confira este artigo MSDN:
Testing e resposta a conexões de rede no .NET Compact Framework
Outras dicas
A maneira mais fácil é usar SDF do OpenNETCF e olhar para o OpenNETCF.Net.NetworkInformation.NetworkInterfaceWatcher classe , que vai elevar eventos quando NDIS envia notificações (como MEDIA_CONNECT e MEDIA_DISCONNECT).
Você pode fazer o mesmo trabalho sem a SDF, é claro. Trata-se de onening o driver NDIS diretamente e chamando IOCTL_NDISUIO_REQUEST_NOTIFICATION com uma mensagem P2P identificador de fila. Não é excessivamente difícil, mas há muita coisa que você tem que acertar para que ele funcione e não vazar.
GetAdaptersInfo e percorrer a lista de adaptadores de rede disponíveis até encontrar o que você está procurando?
Uma coisa a lembrar é que uma conexão de rede é não igual a uma conexão de internet.
Parece que você já começa que porque você definir conectado como significando "um cabo é conectado à conexão Ethernet", mas vale a pena repetir.