Просмотр исходного кода ( Ссылочный источник , GitHub ), если параметр, переданный в Send()
, является именем, тогда Dns.GetHostAddresses()
используется для ее разрешения, и возвращается первый адрес, который используется.Таким образом, если этот первый адрес является IPv6-адресом, то этот адрес и будет проверен, и нет способа изменить это поведение.
Вместо этого вы можете сами вызвать Dns.GetHostAddresses()
, filterрезультаты включают или предпочитают адреса IPv4 и передают , что - Ping.Send()
:
IPAddress addressToPing = Dns.GetHostAddresses("example.com")
.First(address => address.AddressFamily == AddressFamily.InterNetwork);
using (Ping ping = new Ping())
{
PingReply reply = ping.Send(addressToPing, 10000, new byte[] { 1 }, new PingOptions(1, true));
// Do something with reply...
}