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

gexweb

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

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 579
Благодарностей
3 399
Баллы
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
Сообщения
147
Благодарностей
24
Баллы
18
Заметил интересную штуку. Пингую например ya.ru, возвращается значение задержки в переменную, все ок. Пингую любой несуществующий адрес, всегда возвращается 0. И по красной ветке никогда не выходит.
 

Yuriy Zymlex

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

udder

Client
Регистрация
28.03.2017
Сообщения
633
Благодарностей
138
Баллы
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 579
Благодарностей
3 399
Баллы
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 579
Благодарностей
3 399
Баллы
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
Сообщения
633
Благодарностей
138
Баллы
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 579
Благодарностей
3 399
Баллы
113
  • Спасибо
Реакции: udder

udder

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

Yuriy Zymlex

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

melutsk

Client
Регистрация
03.08.2016
Сообщения
1 352
Благодарностей
1 259
Баллы
113
Регистрация
19.12.2015
Сообщения
288
Благодарностей
36
Баллы
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 579
Благодарностей
3 399
Баллы
113

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