Конференция "Сети" » Корректное определение IP адреса сетевой карты [D7, WinXP]
 
  • Laguna © (18.01.12 23:44) [40]

    > Это ты сейчас фрагмент чего привел - фрагмент "головной
    > программы" ?

    Нет, это фрагмент "региональной" программы.

    > покажи код приема сообщения от региона...

    а там кода как такового  нет. Сообщение - это текстовый фарм определенного формата. Смотря какая функция выполняется. Если отсылка опреатору - то простая отправка из региона по почте на конкретный адрес. Если запись в базу, то тоже писал. "Головная программа" - я даже не знаю как сказать. Это просто просмотр переданных данных с фильтрацией по конкретному региону.
  • Laguna © (18.01.12 23:48) [41]

    > Типа чтобы у серверной части - получателя ("головной программы"
    > или что там у тебя - не знаю) не болела голова о сортировке
    > поступающих отчетов по отправителям.

    Эврика !!! Наконец то. Именно так и есть.


    > И это вместо того чтобы завести один-единственный почтовый
    > ящик, кидать туда

    Иногда мы не в силах изменить установленные правила. Организация большая и правила установлены не мной. Я под них только подстраиваюсь.
  • Dennis I. Komarov © (19.01.12 00:19) [42]
    Я бы повесил TCP-Server голове, который по ip-у клиента возвращал почтовый адрес оператора. И у клиента голова не болит, и управляется все в одном месте...
  • Laguna © (19.01.12 00:25) [43]

    > который по ip-у клиента возвращал почтовый адрес оператора

    А чем этот вариант будет отличатся от показанного мною выше варианта с массивом адресов и подстановкой нужного в зависимости от определенного IP адреса? Ведь суть от этого не меняется, суть всеравно заключается в первоначальном определении IP адреса региона.
  • Dennis I. Komarov © (19.01.12 08:03) [44]
    Ну сам же сказал, что структуру поменять не можешь... Вот и заплатка соответствующая. Как по хорошему надо делать, уже Сергей сказал.


    > А чем этот вариант будет отличатся от показанного мною выше
    > варианта с массивом адресов и подстановкой нужного в зависимости
    > от определенного IP адреса?

    1. адрес будет того интерфейса, с которого произошло соединение (а не IP камеры и т.п.), и не важно, локальный он будет или белый прова, т.к. локальные оказались за NAT-ом, идентифицировать можно...
    2. таблица соответствия находится не на многих клиентах, а на одном сервере, и если сегодня Маша ушла в декрет, Лена заболела, а Таня перешла в другой отдел, достаточно будет исправить эту одну табличку, а не устраивать разборки почему письмо ушло не туда, и в срочном порядке править софт n-му клиенту...
  • Сергей М. © (19.01.12 09:50) [45]

    > Организация большая и правила установлены не мной


    Бардак автоматизировать нельзя)
  • laguna © (19.01.12 11:10) [46]

    > Бардак автоматизировать нельзя)

    При случае предложу эту мысль директору на рассмотрение :). Итак мы пришли к тому, что вы советуете разные варианты, ну никак не способы определения IP.
  • Сергей М. © (19.01.12 11:32) [47]
    Ты проигнорировал [38]
  • laguna © (19.01.12 12:18) [48]
    Сергей М.

    Я не проигнорировал, я просто не понял смысла намека. Что List - это список я и сам знаю, вот что он определяет в контексте приведенного куска кода я не понял как я должен был отреагировать. Если не трудно, продли мысль, только если можно без наводящих вопросов и пр. , дабы не флудить .
  • Сергей М. © (19.01.12 12:28) [49]
    А может сначала справку внимательнло проштудируешь именно по описанию этого параметра ?
  • Сергей М. © (19.01.12 12:31) [50]

    > я просто не понял смысла намека. Что List - это список я
    > и сам знаю


    Ну если это список, значит он может содержать и более одного элемента. Но ты игнорируешь любые потенциально существующие в списке элементы кроме первого, а потом удивляешься почему адресов у интерфейса больше чем ты ожидал)
  • Сергей М. © (19.01.12 12:32) [51]

    > у интерфейса


    у хоста конечно же, а не у интерфейса
  • laguna © (19.01.12 13:18) [52]

    > Но ты игнорируешь любые потенциально существующие в списке
    > элементы кроме первого, а потом удивляешься почему адресов
    > у интерфейса больше чем ты ожидал)

    Ну да, действительно функция тупо берет первый элемент списка и не важно какой IP будет на его месте. Плохо, что у меня уже пропал интерфейс камеры. Не могу сейчас проверить набор списка. Правда нужно  еще подумать как к нему подобраться...
  • Сергей М. © (19.01.12 13:52) [53]

    > Ну да, действительно функция тупо берет первый элемент списка


    Ну так и сделай не "тупо", а по уму - прочитай ВЕСЬ список и ищи в нем адрес, попадающий под твои условия..


    > Плохо, что у меня уже пропал интерфейс камеры. Не могу сейчас
    > проверить набор списка


    Вот ведь трагедия-то)
    Ну возьми да установи на время тестирования любой софт, создающий хотя бы один виртуальный сетевой интерфейс !
    Оного ж как дерьма за баней существует - возьми хоть тот же Хамачи для пущей наглядности)...


    > нужно  еще подумать как к нему подобраться


    Ты программист или где ?)
    Открываешь справку - там все написано ..
  • laguna © (19.01.12 15:02) [54]
    Структуру HostEnt я обозрел. Чет в разъименованиях запутался.

    Result := iNet_ntoa(PInAddr(p^.h_addr_list^)^);

  • Сергей М. © (19.01.12 16:05) [55]

    > Чет в разъименованиях запутался


    Мдя ..


    function GetLocalIPs: String;
    const
     WSVer = $101;
    type
     PPInAddr = ^PInAddr;
    var
     wsaData: TWSAData;
     P: PHostEnt;
     Buf: array [0..127] of Char;
     NextAddrTableItem: PPInAddr;
    begin
     Result := '';
     if WSAStartup(WSVer, wsaData) = 0 then
      begin
        if GetHostName(@Buf, 128) = 0 then
         begin
           P := GetHostByName(@Buf);
           if P <> nil then
             begin
               NextAddrTableItem := PPInAddr(p.h_addr_list);
               while Assigned(NextAddrTableItem^) do
                 begin
                   if Result <> '' then
                     Result := Result + #13#10;
                   Result := Result + String(iNet_ntoa(PInAddr(NextAddrTableItem^)^));
                   Inc(NextAddrTableItem);
                 end;
             end;
         end;
        WSACleanup;
      end;
    end;

  • Dennis I. Komarov © (19.01.12 19:26) [56]
    Мдя... Зыж какой же гений сие вообще придумал?
  • Dennis I. Komarov © (19.01.12 19:33) [57]
    За не очень скромное вознаграждение, вылечу вашу контору от гемороя :)
  • Laguna © (19.01.12 21:12) [58]

    > Сергей М. ©   (19.01.12 16:05) [55]


    Спасибю, завтра буду разбираться.
 
Конференция "Сети" » Корректное определение IP адреса сетевой карты [D7, WinXP]
Есть новые Нет новых   [134435   +17][b:0.001][p:0.002]