Eventos
17 de mar., 21 - 21 de mar., 10
Junte-se à série de encontros para criar soluções de IA escaláveis com base em casos de uso do mundo real com outros desenvolvedores e especialistas.
Registrar agoraNão há mais suporte para esse navegador.
Atualize o Microsoft Edge para aproveitar os recursos, o suporte técnico e as atualizações de segurança mais recentes.
O namespace System.Net.NetworkInformation permite que você colete informações sobre eventos, alterações, estatísticas e propriedades de rede. Neste artigo, você aprenderá a usar a classe System.Net.NetworkInformation.NetworkChange para determinar se o endereço de rede ou a disponibilidade foram alterados. Além disso, você verá informações sobre as estatísticas de rede e as propriedades com base na interface ou no protocolo. Por fim, você usará a classe System.Net.NetworkInformation.Ping para determinar se um host remoto pode ser acessado.
A classe System.Net.NetworkInformation.NetworkChange permite que você determine se o endereço de rede ou a disponibilidade foi alterada. Para usar essa classe, crie um manipulador de eventos para processar a alteração e associe-o a um NetworkAddressChangedEventHandler ou NetworkAvailabilityChangedEventHandler.
NetworkChange.NetworkAvailabilityChanged += OnNetworkAvailabilityChanged;
static void OnNetworkAvailabilityChanged(
object? sender, NetworkAvailabilityEventArgs networkAvailability) =>
Console.WriteLine($"Network is available: {networkAvailability.IsAvailable}");
Console.WriteLine(
"Listening changes in network availability. Press any key to continue.");
Console.ReadLine();
NetworkChange.NetworkAvailabilityChanged -= OnNetworkAvailabilityChanged;
O código anterior do C#:
NetworkChange.NetworkAddressChanged += OnNetworkAddressChanged;
static void OnNetworkAddressChanged(
object? sender, EventArgs args)
{
foreach ((string name, OperationalStatus status) in
NetworkInterface.GetAllNetworkInterfaces()
.Select(networkInterface =>
(networkInterface.Name, networkInterface.OperationalStatus)))
{
Console.WriteLine(
$"{name} is {status}");
}
}
Console.WriteLine(
"Listening for address changes. Press any key to continue.");
Console.ReadLine();
NetworkChange.NetworkAddressChanged -= OnNetworkAddressChanged;
O código anterior do C#:
Você pode coletar estatísticas de rede e propriedades por protocolo ou por interface. As classes NetworkInterface, NetworkInterfaceType e PhysicalAddress fornecem informações sobre um adaptador de rede específico, enquanto as classes IPInterfaceProperties, IPGlobalProperties, IPGlobalStatistics, TcpStatistics e UdpStatistics fornecem informações sobre os pacotes de camada 3 e de camada 4.
ShowStatistics(NetworkInterfaceComponent.IPv4);
ShowStatistics(NetworkInterfaceComponent.IPv6);
static void ShowStatistics(NetworkInterfaceComponent version)
{
var properties = IPGlobalProperties.GetIPGlobalProperties();
var stats = version switch
{
NetworkInterfaceComponent.IPv4 => properties.GetTcpIPv4Statistics(),
_ => properties.GetTcpIPv6Statistics()
};
Console.WriteLine($"TCP/{version} Statistics");
Console.WriteLine($" Minimum Transmission Timeout : {stats.MinimumTransmissionTimeout:#,#}");
Console.WriteLine($" Maximum Transmission Timeout : {stats.MaximumTransmissionTimeout:#,#}");
Console.WriteLine(" Connection Data");
Console.WriteLine($" Current : {stats.CurrentConnections:#,#}");
Console.WriteLine($" Cumulative : {stats.CumulativeConnections:#,#}");
Console.WriteLine($" Initiated : {stats.ConnectionsInitiated:#,#}");
Console.WriteLine($" Accepted : {stats.ConnectionsAccepted:#,#}");
Console.WriteLine($" Failed Attempts : {stats.FailedConnectionAttempts:#,#}");
Console.WriteLine($" Reset : {stats.ResetConnections:#,#}");
Console.WriteLine(" Segment Data");
Console.WriteLine($" Received : {stats.SegmentsReceived:#,#}");
Console.WriteLine($" Sent : {stats.SegmentsSent:#,#}");
Console.WriteLine($" Retransmitted : {stats.SegmentsResent:#,#}");
Console.WriteLine();
}
O código anterior do C#:
ShowStatistics
personalizado para exibir as estatísticas de cada protocolo.ShowStatistics
chama IPGlobalProperties.GetIPGlobalProperties() e, dependendo do NetworkInterfaceComponent determinado, chama IPGlobalProperties.GetIPv4GlobalStatistics() ou IPGlobalProperties.GetIPv6GlobalStatistics().Você pode usar a classe Ping para determinar se um host remoto está funcionando, se está na rede e se pode ser acessado.
using Ping ping = new();
string hostName = "stackoverflow.com";
PingReply reply = await ping.SendPingAsync(hostName);
Console.WriteLine($"Ping status for ({hostName}): {reply.Status}");
if (reply is { Status: IPStatus.Success })
{
Console.WriteLine($"Address: {reply.Address}");
Console.WriteLine($"Roundtrip time: {reply.RoundtripTime}");
Console.WriteLine($"Time to live: {reply.Options?.Ttl}");
Console.WriteLine();
}
O código anterior do C#:
"stackoverflow.com"
.Comentários do .NET
O .NET é um projeto código aberto. Selecione um link para fornecer comentários:
Eventos
17 de mar., 21 - 21 de mar., 10
Junte-se à série de encontros para criar soluções de IA escaláveis com base em casos de uso do mundo real com outros desenvolvedores e especialistas.
Registrar agoraTreinamento
Roteiro de aprendizagem
Configurar a rede para clientes Windows - Training
Configurar a rede para clientes Windows MD-100
Certificação
Microsoft Certified: Azure Network Engineer Associate - Certifications
Demonstre o design, a implementação e a manutenção da infraestrutura de rede do Azure, o tráfego de balanceamento de carga, o roteamento de rede e muito mais.
Documentação
Programação de rede no .NET - .NET
Saiba mais sobre várias abordagens de rede para o desenvolvimento de aplicativos .NET.