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

gexweb

Client
Регистрация
04.12.2016
Сообщения
144
Благодарностей
23
Баллы
18
Подскажите, есть ли возможность средствами C# выполнить команду "ping" с последующим взятием значения? (Не средствами стороннего веб сервиса!!!)
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 352
Благодарностей
3 279
Баллы
113
Примерно, так:
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();
}
 
Последнее редактирование:

gexweb

Client
Регистрация
04.12.2016
Сообщения
144
Благодарностей
23
Баллы
18
Спасибо работает!
 

gexweb

Client
Регистрация
04.12.2016
Сообщения
144
Благодарностей
23
Баллы
18
Заметил интересную штуку. Пингую например ya.ru, возвращается значение задержки в переменную, все ок. Пингую любой несуществующий адрес, всегда возвращается 0. И по красной ветке никогда не выходит.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
Заметил интересную штуку. Пингую например ya.ru, возвращается значение задержки в переменную, все ок. Пингую любой несуществующий адрес, всегда возвращается 0. И по красной ветке никогда не выходит.
поставь проверку, если 0 то по красной выйди
 

gexweb

Client
Регистрация
04.12.2016
Сообщения
144
Благодарностей
23
Баллы
18
Тут еще нюанс есть, если я пингую сам себя или любой локальный ресурс то получается задержка минимальная равная 1 мс, и не совсем понятно то ли программа считает что задержка 0 мс, то ли узел не доступен, возвращает значение 0.
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 352
Благодарностей
3 279
Баллы
113
  • Спасибо
Реакции: doc и gexweb

udder

Client
Регистрация
28.03.2017
Сообщения
595
Благодарностей
118
Баллы
43
Примерно, так:
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 адрес
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 352
Благодарностей
3 279
Баллы
113
Скажите, как сделать 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

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 352
Благодарностей
3 279
Баллы
113
Проект выполняется, но в ответ я получаю двузначные цифры. 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

udder

Client
Регистрация
28.03.2017
Сообщения
595
Благодарностей
118
Баллы
43
Это пинг, 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 за вас отвечает?)
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 352
Благодарностей
3 279
Баллы
113
  • Спасибо
Реакции: udder

udder

Client
Регистрация
28.03.2017
Сообщения
595
Благодарностей
118
Баллы
43

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 352
Благодарностей
3 279
Баллы
113
  • Спасибо
Реакции: golotenko88

melutsk

Client
Регистрация
03.08.2016
Сообщения
1 345
Благодарностей
1 256
Баллы
113
Регистрация
19.12.2015
Сообщения
271
Благодарностей
34
Баллы
28
Примерно, так:
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();
}
Спасибо, работает отлично!
 

Leo1106

Client
Регистрация
29.03.2021
Сообщения
1
Благодарностей
1
Баллы
3
Примерно, так:
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();
}
Подскажи пж попытался запустить твой код в кубике но выскакивают ошибки в нем
 

Вложения

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 352
Благодарностей
3 279
Баллы
113

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