Конференция "Сети" » Как сделать симуляцию в индиевских серверах?
 
  • Симулятор (14.08.10 13:02) [0]
    Для клиентов, насколько я понял, существует TIdLogFile, результат работы которого можно позже скормить TIdIOHandlerStream.

    Вопрос: что делать с серверами? В частности - с TIdTCPServer. Я нашел, что для серверов существуют логгеры - TIdServerInterceptLogFile. Однако, он выдаёт наружу не чистые байты, а полный лог:
  • Симулятор (14.08.10 13:03) [1]
    Что делать, что бы провести симуляцию у TIdTCPServer?
    Исправлять/переписывать TIdServerInterceptLogFile?
    Вообще - какой компонентой позже проводить симуляцию? Тоже TIdIOHandlerStream'ом?

    Может кто-то сталкивался - ответьте плиз. Инди 10, Делфи 2010.
  • Сергей М. © (16.08.10 09:23) [2]
    Причем здесь "симуляция" ?

    http://www.google.com/search?hl=ru&client=firefox&hs=gVD&rls=org.mozilla:ru:official&defl=ru&q=define: %D0%A1%D0%B8%D0%BC%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F+&sa=X&ei=EctoTNyHCsGUOJf4qLkF&ved=0CBUQkAE
  • Симулятор (16.08.10 11:50) [3]
    Сорри, выражался в терминах Indy In Depth. Нужно повторить поток байт, приходящих в порт, у себя, локально:

    кусок из книги:

    14.2 симуляция.

    Но иногда требуется симулировать клиента или сервер, если он не доступен
    ...
    Симуляция может быть выполнена с помощью TIdIOHandlerStream и назначения...
  • Сергей М. © (16.08.10 11:58) [4]
    Копай в стророну TIdConnectionIntercept
  • Симулятор (16.08.10 13:48) [5]
    Спасибо, посмотрю.
  • Симулятор (16.08.10 14:39) [6]
    Так TIdConnectionIntercept, как я понял, именно клиентские перехватчики:

    TIdLogBase = class(TIdConnectionIntercept)
    TIdLogFile = class(TIdLogBase)

    свойство TIdTCPConnection, от которого наследуются клиенты:

    property Intercept: TIdConnectionIntercept read GetIntercept write SetIntercept;

    Серверные же перехватчики наследуются от:

    TIdServerIntercept = class(TIdBaseComponent)

    свойство TIdCustomTCPServer'а:

    property Intercept: TIdServerIntercept read FIntercept write SetIntercept;
  • Симулятор (16.08.10 14:40) [7]
    свойство TIdTCPConnection читать: свойство TIdTCPConnection'а
  • Сергей М. © (16.08.10 14:48) [8]
    Зачем тебе на сервере перехватывать контекст слушающего потока ?
  • Симулятор (16.08.10 14:58) [9]
    Опишу ситуацию: передатчик - некоторый, чужой, прибор. Приёмник - мой TIdTCPServer. Они соединены локальной сетью и расположены в тысяче км от меня, доступ и удалённая отладка невозможна. Мне нужен побайтный лог того, что влилось с прибора в TIdTCPServer в пределах одной сессии (connect-disconnect). Исходящий траффик TIdTCPServer'а пока что не интересует.
  • Сергей М. © (16.08.10 15:12) [10]
    > удалённая отладка невозможна
    Ну и зачем для этого нужен интерсепт, да еще и слушающего потока  ?
  • Симулятор (16.08.10 15:40) [11]
    Хорошо, как иначе симуляцию сделать?
  • Сергей М. © (16.08.10 15:46) [12]
    Да какую к лешему "симуляцию" ?!)
    Что ты зацепился за это слово ?
    Протоколирование и симуляция - две разных больших разницы !

    Сервер твой ? Твой.
    Изменить его можешь ? Видимо можешь, раз заговорил про интерсепторы.
    Так зачем мудрить с интерсепторами, если все гораздо проще:

    в обработчике OnExecute:

    1. Принять от клиента данные
    2. Запротоколировать их
    3. Обработать принятые данные нужным образом
  • Симулятор (16.08.10 18:20) [13]
    Ну мне не только протоколирование нужно, мне это потом еще воспроизвести у себя нужно.

    >в обработчике OnExecute:

    Не хочется велосипед изобретать.

    Прицепил TIdLogStream к входящему соединению, в OnExecute:

    FLogStream.ReceiveStream := LogStream;
    AIndyConnection.Intercept := FLogStream;

    Вроде бы получилось. Спасибо за обсуждение.
  • Симулятор (16.08.10 18:23) [14]
    По хорошему, то еще бы и время поступления данных учесть, но, думаю, и так концы найдутся.
  • Palladin © (17.08.10 07:45) [15]

    > Ну мне не только протоколирование нужно, мне это потом еще
    > воспроизвести у себя нужно.

    что значит воспроизвести? зигота блин...
  • Anatoly Podgoretsky © (17.08.10 08:49) [16]
    > Palladin  (17.08.2010 07:45:15)  [15]

    Для Инди воспроизведение встроеная возможность.
  • Симулятор (17.08.10 11:56) [17]

    > что значит воспроизвести? зигота блин...


    Ну это к Подгорецкому, он напереводил ;)

    Вообще, Анатолий, огромное спасибо за перевод. Бывает, сильно помогает. Как в этом случае.
  • Anatoly Podgoretsky © (17.08.10 22:23) [18]
    > Симулятор  (17.08.2010 11:56:17)  [17]

    Ну вот виноватым я оказался :-)
  • Симулятор (18.08.10 02:01) [19]
    Ни одно благородное дело не окажется безнаказанным ;)
 
Конференция "Сети" » Как сделать симуляцию в индиевских серверах?
Есть новые Нет новых   [134436   +26][b:0][p:0.001]