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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.06.2012, 19:04   #1
Chikoy
Пользователь
 
Регистрация: 30.04.2012
Сообщений: 11
Вопрос Как определить по ip адресу компьютер или принтер это?

Помогите пожалуйста, кто может, у меня проблема с программой. Программа предназначена работать с принтерами по ip адресу, но если в ЛВС не один, а несколько принтеров и несколько под сетей, то нужна функция сканирования сети на поиск принтеров из заданного диапазона. Программа работает с принтером по snmp протоколу, сканирование проходит нормально когда под опрос подходит 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."
Помогите решить проблему сканирования сети или как мне исключить все ip адреса компьютеров в сети чтоб программа работала только с принтерами? Ниже представлен код программы работающий с конкретным ip адресом, при помощи этой функции узнаем марку принтера и другую информацию, а вот если ввести адрес компьютера то ошибка.
Код:
Код:
{ Функция 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';
   
       ListBox1.items.Add('Марка принтера' + ': ' + SNMPQuery(host, mib0));
      
      end else;
end;
Цитата:
1.3.6.1.2.1.25.3.2.1.3.1 Canon iR2016
1.3.6.1.4.1.641.2.1.2.1.2.1 Lexmark E450dn
1.3.6.1.4.1.641.2.1.2.1.2.1 Lexmark E460dn
1.3.6.1.4.1.641.2.1.2.1.2.1 Lexmark X264dn
1.3.6.1.4.1.641.2.1.2.1.2.1 Lexmark X463de
1.3.6.1.4.1.641.2.1.2.1.2.1 Lexmark X654de
1.3.6.1.4.1.641.2.1.2.1.2.1 Lexmark T654
1.3.6.1.4.1.641.2.1.2.1.2.1 Lexmark X644e
1.3.6.1.4.1.641.2.1.2.1.2.1 Lexmark T644
1.3.6.1.2.1.25.3.2.1.3.1 Lexmark W840
1.3.6.1.4.1.641.2.1.2.1.2.1 Lexmark W850
1.3.6.1.4.1.236.11.5.1.1.1.1.0 Xerox WorkCentre M20
1.3.6.1.4.1.236.11.5.1.1.1.1.0 Xerox WorkCentre M20i

ПОМОГИТЕ СДЕЛАТЬ СКАНИРОВАНИЕ СЕТИ НА ПОИСК СЕТЕВЫХ ПРИНТЕРОВ В ЛВС?

Последний раз редактировалось Stilet; 24.06.2012 в 20:17.
Chikoy вне форума Ответить с цитированием
Старый 03.07.2012, 15:31   #2
Chikoy
Пользователь
 
Регистрация: 30.04.2012
Сообщений: 11
По умолчанию

А вот и сама ошибка!
Chikoy вне форума Ответить с цитированием
Старый 03.07.2012, 15:49   #3
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

ну не хочет хост с вами общаться, подумаешь
это не ошибка, а исключение
оберните его в try except end и работайте дальше спокойно
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как по полученным множество координатам определить круг это или нет Medet_man C# (си шарп) 2 15.06.2012 13:29
Мертвый сервер или как это происходит? Wait_rabbit PHP 0 28.04.2012 12:47
Сортировка или как это назвать SunnyCrash БД в Delphi 2 13.01.2012 14:03
Как исправить или переделать это можно? cargo29 Общие вопросы Delphi 16 15.01.2011 02:21