Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2012, 18:30   #1
Chikoy
Пользователь
 
Регистрация: 30.04.2012
Сообщений: 11
Вопрос Функция при опросе ip компьютера по snmp выдает ошибку debugger Exception Notification 'Socket Error # 10054

Программа для мониторинга сетевых принтеров по snmp протоколу, создает массив активных ip в ЛВС из указываемого диапазона ip, далее начинается опрос каждого ip в массиве, если опрос с ip адресами принтеров проходит успешно, возвращает нужное значение о состоянии конкретного устройства(датчика), но вот когда под опрос попадает ip компьютера выходит такая ошибка:
debugger Exception Notification
Project project1.exe raised exception class EIdSocketError with message 'Socket Error # 10054 Connection reset by peer.'. Process stopped. Use Step or run to continue.
Решение проблемы:
1. отсеять из массива ip адреса не принтеров и программа будет работать только с принтерами, обращаясь к ним по ip адресу.
2. Сделать опрос ip на выявление компьютеров и удалить их из массива.
3. Сделать опрос ip на поиск в лвс принтеров, так он и сейчас сделан, только работать с компьютером функция опроса нехочет.
4. Вбивать ip ручками так их более сотни, невариант.
5. Помогите или подскажите пожалуйста как мне реализовать возможность работы программы с принтерами в лвс?
Код:
{ Функция SNMP опроса принтера где HOST= IP устройства, Mib=Значение OID состояния устройства(датчика) }
Function SNMPQuery (Host, Mib: string) : string;
var
s: String;
i, j: Integer;
SNMP: TIdSNMP;
begin
      SNMP := TIdSNMP.Create(nil);
      SNMP.Query.Host := Host;
      SNMP.Query.Port := 161;
      SNMP.Query.Community := 'public';
      SNMP.Query.PDUType := PDUGetRequest;
      SNMP.Query.MIBAdd(Mib,'');
      try
         if SNMP.SendQuery then
         for i := 0 to SNMP.Reply.ValueCount - 1 do
            SNMPQuery:= SNMP.Reply.Value[i];
      finally
    SNMP.Free;
  end;
end;

Использование функции на опросе конкретного ip адреса принтера

{ Опрос SNMP принтера }
procedure TForm1.SNMP1Click(Sender: TObject);
var
Host, t: string;
Begin
      ListBox1.Items.Clear;
      host:= inputbox('Введите ip адрес', 'Ip адрес принтера', '');
      if host <> '' then
      begin
       mib0:= '1.3.6.1.2.1.43.11.1.1.8.1.3';
       mib1:= '1.3.6.1.2.1.43.11.1.1.8.1.2';
       mib2:= '1.3.6.1.2.1.43.5.1.1.17.1';
       mib3:= '1.3.6.1.2.1.25.3.5.1.1.1';
       mib4:= '1.3.6.1.2.1.43.16.5.1.2.1.1';
       mib5:= '1.3.6.1.2.1.1.5.0';
       mib6:= '1.3.6.1.2.1.2.2.1.6.1';
       mib7:= '1.3.6.1.2.1.43.10.2.1.4.1.1';
       ListBox1.items.Add('Марка принтера' + ': ' + SNMPQuery(host, mib0));
       ListBox1.items.Add('Объем картриджа' + ': ' + SNMPQuery(host, mib1));
       ListBox1.items.Add('Серийный номер' + ': ' + SNMPQuery(host, mib2));
       ListBox1.items.Add('Printing status' + ': ' + SNMPQuery(host, mib3));
       ListBox1.items.Add('Device status' + ': ' + SNMPQuery(host, mib4));
       ListBox1.items.Add('Host name' + ': ' + SNMPQuery(host, mib5));
       ListBox1.items.Add('Mac adress' + ': ' + SNMPQuery(host, mib6));
       ListBox1.items.Add('Page' + ': ' + SNMPQuery(host, mib7));
      end else;
end;
Chikoy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При выполнение кода выводится Debugger exception notification sasha198407 БД в Delphi 0 31.03.2012 11:50
Ошибка Debugger Exception Notification VKorablev C++ Builder 5 24.11.2011 16:58
Ошибка - Debugger exception notification Football_lady БД в Delphi 1 15.01.2010 19:07
Socket Error 10054 RIO Работа с сетью в Delphi 5 22.09.2009 16:24