Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемы с Ping, Ошибка: NullReferenceException 
:(
    Опции темы
Djinn
Дата 26.12.2008, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 250
Регистрация: 18.5.2007

Репутация: нет
Всего: 1



Здравствуйте, тут вот какая проблема: 

Написал ф-ю которая "пингует" сервер
Код

private bool ping(String address, Int32 timeouts, Int32 n)
        {
            Ping png = new Ping();
            PingReply pngreply;
            try
            {
                pngreply = png.Send(address, timeouts);
                try
                {
                    this.info[n, this.count] = "Ответ от " + address + ": число байт= " + pngreply.Buffer.Length + " время=" +
 pngreply.RoundtripTime.ToString() + " " + "TTL=" + pngreply.Options.Ttl + "\r\n";
                    return true;
                }
                catch (Exception)
                {
                    this.info[n, this.count] = "Ошибка пинга: " + address + " \r\n";
                    return false;
                }
            }
            catch (Exception)
            {
                this.info[n,this.count] = "DNS или сервер не доступен с указаной задержой пинга: " + address + " \r\n";
                return false;
            }
        }


все бы нечего, если бы не проблема что иногда даже при здоровом пинге вылетает на этой строке:
Код

try
                {
                    this.info[n, this.count] = "Ответ от " + address + ": число байт= " + pngreply.Buffer.Length + " время=" +
 pngreply.RoundtripTime.ToString() + " " + "TTL=" + pngreply.Options.Ttl + "\r\n";
                    return true;
                }
                catch (Exception)
                {
                    this.info[n, this.count] = "Ошибка пинга: " + address + " \r\n";
                    return false;
                }


и с ошибкой якобы: NullReferenceException.
Вы не могли бы подсказать в чем проблема ? и как избавится от нее?

Заранее благодарен за внимание  smile

Добавлено @ 18:26
Притом потери в основном именно в этом try...catch... даже странно как-то smile

Добавлено через 13 минут и 26 секунд
И подскажите плз, эти 2 исключения считаются как ошибки пинга? или же
Код

try
                {
                    this.info[n, this.count] = "Ответ от " + address + ": число байт= " + pngreply.Buffer.Length + " время=" +
 pngreply.RoundtripTime.ToString() + " " + "TTL=" + pngreply.Options.Ttl + "\r\n";
                    return true;
                }
                catch (Exception)
                {
                    this.info[n, this.count] = "Ошибка пинга: " + address + " \r\n";
                    return false;
                }


все же какой-то баг который надо исправить каким-то образом ?

Это сообщение отредактировал(а) Djinn - 26.12.2008, 18:32
PM MAIL   Вверх
Partizan
Дата 26.12.2008, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



Djinn, дык поставь брейкпойнт на строке с присваиванием и посмотри в отладчике какой из членов выражения равен null


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Djinn
Дата 26.12.2008, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 250
Регистрация: 18.5.2007

Репутация: нет
Всего: 1



Цитата(Partizan @  26.12.2008,  20:47 Найти цитируемый пост)
Djinn, дык поставь брейкпойнт на строке с присваиванием и посмотри в отладчике какой из членов выражения равен null


дело в том что такое выдает ток в Внешнем трафике, например внутри сети все ок пингует... Интересно то, что стандартный виндовый пингер не показывает и половину обрывов, хотя у меня пинг в 3 раза чаще проходит и нет ожидания ответа длиного как у него... Бага это или на самом деле такие перебои в сети ?

Заранее благодарен, надеюсь все норм. написал...  smile  smile 
PM MAIL   Вверх
Partizan
Дата 26.12.2008, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



Djinn, может в результате непрошедшего пинга pngreply у вас равен null....отсюда и валится NullReferenceException


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Djinn
Дата 26.12.2008, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 250
Регистрация: 18.5.2007

Репутация: нет
Всего: 1



Цитата(Partizan @  26.12.2008,  22:14 Найти цитируемый пост)
Djinn, может в результате непрошедшего пинга pngreply у вас равен null....отсюда и валится NullReferenceException


Вот за это сенкс, а непрошедший пинг - это бага или что ?
по какой причине может быть такое, что пинг не прошел ? smile потому что это бывает часто... Хотя у меня со временем появляется такое чувство что именно инет так лагает :(
PM MAIL   Вверх
Partizan
Дата 27.12.2008, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



Цитата

по какой причине может быть такое, что пинг не прошел 


Djinn, 


Код

if (pngReply != null)
                {

                    this.info[n, this.count] = "Ответ от " + address + ": число байт= " + pngreply.Buffer.Length + " время=" +
 pngreply.RoundtripTime.ToString() + " " + "TTL=" + pngreply.Options.Ttl + "\r\n";
                    return true;
                }
else
                {
                    this.info[n, this.count] = "Ошибка пинга: " + address + " \r\n";
                    return false;
                }



--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Djinn
Дата 27.12.2008, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 250
Регистрация: 18.5.2007

Репутация: нет
Всего: 1



То есть получается что мой пинг правильно работает ?
Меня интересует почему тогда он не всегда совпадает с ping.exe виндовым ?  smile 


Partizan, Спасибо тебе за помощь smile
PM MAIL   Вверх
Djinn
Дата 29.12.2008, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 250
Регистрация: 18.5.2007

Репутация: нет
Всего: 1



можете плз подсказать, почему подключение к google.com  есть, захожу и пингую его... а вот этот пинг показывает что пинга нет к google.com... подскажите плз в чем проблема ?
PM MAIL   Вверх
Partizan
Дата 29.12.2008, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



Djinn, попробуйте таймаут поставить побольше...у меня аналогичный код прекрасно всех пингует...


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Djinn
Дата 29.12.2008, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 250
Регистрация: 18.5.2007

Репутация: нет
Всего: 1



а какой таймаут оптимальный ? у меня стоит пол секунды + пропуск если поток прошлый еще не закончил выполнение...

Добавлено через 2 минуты и 32 секунды
Код

pngreply = png.Send(address, 30);

стабильно стоит 30 сек. а вот выполняеться код каждые пол секунды smile так будет правильнее
PM MAIL   Вверх
Partizan
Дата 29.12.2008, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



Djinn,  smile это не 30 сек... это 30 мс... а полсекунды - это 500 мс...


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Djinn
Дата 29.12.2008, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 250
Регистрация: 18.5.2007

Репутация: нет
Всего: 1



смотри
по таймеру запускается поток: раз в 500 мс.
а при пинге указан: 
Код

pngreply = png.Send(address, 30);

иногда пробывал второй параметр 90 ставить... пофиг smile например бывает что 2 сервера пингует, а третий нет, хотя ping.exe его с удовольствием пингует и норм заходит на него с браузера... вот в чем проблема...
PM MAIL   Вверх
Partizan
Дата 29.12.2008, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



Djinn, какая разница с какой периодичностью поток запускается...таймаут у пинга маленький слишком...поставьте вторым параметром 500...или 1000 накрайняк...и ощутите разницу...


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Djinn
Дата 30.12.2008, 02:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 250
Регистрация: 18.5.2007

Репутация: нет
Всего: 1



Цитата(Partizan @  29.12.2008,  23:04 Найти цитируемый пост)
Djinn, какая разница с какой периодичностью поток запускается...таймаут у пинга маленький слишком...поставьте вторым параметром 500...или 1000 накрайняк...и ощутите разницу... 


Попробовал, не помогло.

php.exe:
user posted image

моя программа:
user posted image
PM MAIL   Вверх
Djinn
Дата 31.12.2008, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 250
Регистрация: 18.5.2007

Репутация: нет
Всего: 1



подскажите плз в чем проблема ?  smile  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0535 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.