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

gexweb

Client
Joined
Dec 4, 2016
Messages
147
Reaction score
24
Points
18
Подскажите, есть ли возможность средствами C# выполнить команду "ping" с последующим взятием значения? (Не средствами стороннего веб сервиса!!!)
 

Yuriy Zymlex

Client
Joined
Oct 23, 2016
Messages
6,716
Reaction score
3,481
Points
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();
}
 
Last edited:

gexweb

Client
Joined
Dec 4, 2016
Messages
147
Reaction score
24
Points
18
Заметил интересную штуку. Пингую например ya.ru, возвращается значение задержки в переменную, все ок. Пингую любой несуществующий адрес, всегда возвращается 0. И по красной ветке никогда не выходит.
 

Yuriy Zymlex

Client
Joined
Oct 23, 2016
Messages
6,716
Reaction score
3,481
Points
113
  • Thank you
Reactions: doc and gexweb

udder

Client
Joined
Mar 28, 2017
Messages
638
Reaction score
140
Points
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

Client
Joined
Oct 23, 2016
Messages
6,716
Reaction score
3,481
Points
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();
}
 

Yuriy Zymlex

Client
Joined
Oct 23, 2016
Messages
6,716
Reaction score
3,481
Points
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
 

udder

Client
Joined
Mar 28, 2017
Messages
638
Reaction score
140
Points
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

Client
Joined
Oct 23, 2016
Messages
6,716
Reaction score
3,481
Points
113
так оперативно мне еще не помогали, это ZennoPoster за вас отвечает?)
Почти :-)
 
  • Thank you
Reactions: udder

udder

Client
Joined
Mar 28, 2017
Messages
638
Reaction score
140
Points
43
Почти :-)
Скажите, пожалуйста, возможно ли получить Ns сервера домена средствами C#?
 

Yuriy Zymlex

Client
Joined
Oct 23, 2016
Messages
6,716
Reaction score
3,481
Points
113
возможно ли получить Ns сервера домена средствами C#?
Тут указаны разные способы:
 
  • Thank you
Reactions: golotenko88

melutsk

Client
Joined
Aug 3, 2016
Messages
1,358
Reaction score
1,260
Points
113
Тут указаны разные способы:
есть какието ограничения кстати по запросам? например 1 млрд в сутки реально сделать? ну например)
 
Joined
Dec 19, 2015
Messages
296
Reaction score
37
Points
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
Joined
Mar 29, 2021
Messages
1
Reaction score
1
Points
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();
}
Подскажи пж попытался запустить твой код в кубике но выскакивают ошибки в нем
 

Attachments

Yuriy Zymlex

Client
Joined
Oct 23, 2016
Messages
6,716
Reaction score
3,481
Points
113
Подскажи пж попытался запустить твой код в кубике но выскакивают ошибки в нем
В данном коде Dns вообще не упоминается, у вас ошибка в другом экшене.
 

Users Who Are Viewing This Thread (Total: 1, Members: 0, Guests: 1)