То есть код вида
Ping ping = new Ping();
PingReply pr = ping.Send(IPadress);
* This source code was highlighted with Source Code Highlighter.
Работать к сожалению не будет.
Вот пример, как это обойти и спокойно пинговать адреса .рф
Для начала создадим окно примерно следующего вида -
Добавим
using System.Globalization;
* This source code was highlighted with Source Code Highlighter.
Далее повесим на кнопку Ping обработчик нажатия
private void btnPing_Click(object sender, EventArgs e)
{
//Проверяем введен ли какой либо домен
if (txtDomain.Text != null && txtDomain.Text != "")
{
IdnMapping idn = new IdnMapping();
//Тестовое окно сообщения выводящие домен после преобразования
MessageBox.Show("Доменное имя в IDN кодировке - " + idn.GetAscii(txtDomain.Text), "Доменное имя в IDN кодировке", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
try
{
//собствено сам пинг
Ping p = new Ping();
PingReply pr = p.Send(idn.GetAscii(txtDomain.Text));
txtAnswer.Text += txtDomain.Text + " - " + pr.Address.ToString() + ", " + pr.Status + Environment.NewLine;
}
//Обработка исключения пинга
catch (PingException)
{
txtAnswer.Text += "Пинг " + txtDomain.Text + " не удачен" + Environment.NewLine;
}
}
else
{
txtAnswer.Text += "Введите имя домена для пинга!!!" + Environment.NewLine;
}
}
* This source code was highlighted with Source Code Highlighter.
Теперь можем компилировать. В результате получим следующее (последовательно пинговал - "", "президент", "президент.рф" и "kremlin.ru") -
В принципе код не имеет противопоказаний. То есть, если домен латинский (ru, com, org и тд), он вернётся как есть. Так что лучше всегда добавлять в сетевой код.
Комментариев нет:
Отправить комментарий