Команда ping для IP и домена

  • Автор темы Автор темы gexweb
  • Дата начала Дата начала

gexweb

Client
Регистрация
04.12.2016
Сообщения
147
Реакции
24
Баллы
18
Подскажите, есть ли возможность средствами C# выполнить команду "ping" с последующим взятием значения? (Не средствами стороннего веб сервиса!!!)
 
Примерно, так:
C#:
Развернуть Свернуть Копировать
System.Net.NetworkInformation.Ping pinger = new System.Net.NetworkInformation.Ping();
string ip = project.Variables["IP"].Value; // IP - переменная проекта зенки

try
{
    System.Net.NetworkInformation.PingReply reply = pinger.Send(ip);
    if(reply.Status != System.Net.NetworkInformation.IPStatus.Success)
        throw new Exception("Не удалось пропинговать " + ip + ". Причина: " + reply.Status);
    return reply.RoundtripTime;
}
catch (Exception e)
{
    throw; // по красной
    //project.SendErrorToLog(e.Message); // по зелёной
}
finally
{
    if (pinger != null) pinger.Dispose();
}
 
Последнее редактирование:
Заметил интересную штуку. Пингую например ya.ru, возвращается значение задержки в переменную, все ок. Пингую любой несуществующий адрес, всегда возвращается 0. И по красной ветке никогда не выходит.
 
Примерно, так:
C#:
Развернуть Свернуть Копировать
System.Net.NetworkInformation.Ping pinger = new System.Net.NetworkInformation.Ping();
string ip = project.Variables["IP"].Value; // IP - переменная проекта зенки

try
{
    System.Net.NetworkInformation.PingReply reply = pinger.Send(ip);
    if(reply.Status != System.Net.NetworkInformation.IPStatus.Success)
        throw new Exception("Не удалось пропинговать " + ip + ". Причина: " + reply.Status);
    return reply.RoundtripTime;
}
catch (Exception e)
{
    throw; // по красной
    //project.SendErrorToLog(e.Message); // по зелёной
}
finally
{
    if (pinger != null) pinger.Dispose();
}
Скажите, как сделать Ping домена, чтобы получить его IP адрес
 
Скажите, как сделать Ping домена, чтобы получить его IP адрес
Пингует первый IP домена:
C#:
Развернуть Свернуть Копировать
System.Net.NetworkInformation.Ping pinger = new System.Net.NetworkInformation.Ping();

try
{
    var ipAddrs = System.Net.Dns.GetHostAddresses(project.Variables["test"].Value);
    if(ipAddrs.Length == 0)
        throw new Exception("Список IP не был получен.");
    string ip = ipAddrs[0].ToString(); // IP
    System.Net.NetworkInformation.PingReply reply = pinger.Send(ip);
    if(reply.Status != System.Net.NetworkInformation.IPStatus.Success)
        throw new Exception("Не удалось пропинговать " + ip + ". Причина: " + reply.Status);
    return reply.RoundtripTime;
}
catch (Exception e)
{
    throw; // по красной
    //project.SendErrorToLog(e.Message); // по зелёной
}
finally
{
    if (pinger != null) pinger.Dispose();
}
 
  • Спасибо
Реакции: Dr.Pipetka и udder
Проект выполняется, но в ответ я получаю двузначные цифры. 51, 54. Вместо IP)
Это пинг. IP получается проще:
C#:
Развернуть Свернуть Копировать
var ipAddrs = System.Net.Dns.GetHostAddresses(project.Variables["test"].Value);
if(ipAddrs.Length == 0)
    throw new Exception("Список IP не был получен.");
return ipAddrs[0].ToString(); // IP
 
  • Спасибо
Реакции: djaga и golotenko88
Это пинг, IP получается проще:
C#:
Развернуть Свернуть Копировать
var ipAddrs = System.Net.Dns.GetHostAddresses(project.Variables["test"].Value);
if(ipAddrs.Length == 0)
    throw new Exception("Список IP не был получен.");
return ipAddrs[0].ToString(); // IP
Действительно, запутался. Нужный результат достигнут. Большое спасибо за помощь, так оперативно мне еще не помогали, это ZennoPoster за вас отвечает?)
 
Примерно, так:
C#:
Развернуть Свернуть Копировать
System.Net.NetworkInformation.Ping pinger = new System.Net.NetworkInformation.Ping();
string ip = project.Variables["IP"].Value; // IP - переменная проекта зенки

try
{
    System.Net.NetworkInformation.PingReply reply = pinger.Send(ip);
    if(reply.Status != System.Net.NetworkInformation.IPStatus.Success)
        throw new Exception("Не удалось пропинговать " + ip + ". Причина: " + reply.Status);
    return reply.RoundtripTime;
}
catch (Exception e)
{
    throw; // по красной
    //project.SendErrorToLog(e.Message); // по зелёной
}
finally
{
    if (pinger != null) pinger.Dispose();
}

Спасибо, работает отлично!
 
Примерно, так:
C#:
Развернуть Свернуть Копировать
System.Net.NetworkInformation.Ping pinger = new System.Net.NetworkInformation.Ping();
string ip = project.Variables["IP"].Value; // IP - переменная проекта зенки

try
{
    System.Net.NetworkInformation.PingReply reply = pinger.Send(ip);
    if(reply.Status != System.Net.NetworkInformation.IPStatus.Success)
        throw new Exception("Не удалось пропинговать " + ip + ". Причина: " + reply.Status);
    return reply.RoundtripTime;
}
catch (Exception e)
{
    throw; // по красной
    //project.SendErrorToLog(e.Message); // по зелёной
}
finally
{
    if (pinger != null) pinger.Dispose();
}

Подскажи пж попытался запустить твой код в кубике но выскакивают ошибки в нем
 

Вложения

  • Снимок экрана 2023-08-18 в 03.17.02.png
    Снимок экрана 2023-08-18 в 03.17.02.png
    167,2 KB · Просмотры: 11

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)