Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TIDTelnetServer [D7, Win2k]


Страницы:   1 2

alt7 ©   (2003-08-13 11:35:00) 

Добрый день всезнающий народ...
Не подскажите, как сделать, чтоб сабж откликался на команды (а то я сходу не нашел)

То есть, я к примеру пишу ему LAST (в клиенте), а он мне передает последние данные?


alt7   (2003-08-14 16:10:00) [1]

а про это я уже писал, таймаут проходит, а readln не заканчивается


nikkie   (2003-08-14 13:14:00) [2]

>клиента пока нету, но буду потом писать, счас телнет...
вот тогда ты и задумаешься - зачем же ты сделал telnet сервер

делай readln с маленьким таймаутом.


alt7   (2003-08-14 12:27:00) [3]

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


nikkie   (2003-08-13 18:10:00) [4]

>alt7
забудь про конкретные компоненты и события. продумай сначала протокол. а то каша получается - сервер сыпет данные, и вдруг посередине этих данных получает комманду от клиента, приостанавливает свое дело, кидает ответ на комманду и начинает сыпать дальше? интересно, какой клиент в этом сможет разобраться. клиента-то ты сам пишешь или telnet пользуешься?


Reindeer Moss Eater   (2003-08-13 17:35:00) [5]

вероятно enter срабатывает, просто я не знаю как его отловить в буфере, как он там обозначен?

Его ловить не надо. Если он является ограничителем строки для ReadLn, то сразу после возврата из ReadLn (если нет таймаута) - ты поймал команду клиента ограниченную этим самым ограничителем.


alt7   (2003-08-13 17:31:00) [6]

Не могу сказать, что туманен, я думаю - я нормально объяснил...
вероятно enter срабатывает, просто я не знаю как его отловить в буфере, как он там обозначен?

А что посоветуешь брать в качестве сервера? из инди и не TCPServer?


Reindeer Moss Eater   (2003-08-13 17:18:00) [7]

Трудно тебе помочь.
Протокол взаимодействия клиента и сервера туманен.
В качестве сервера зачем-то выбран TidTelnet.
Телнет клиент, позволяющий вводить пользователю данные во время вывода непрерывного потока данных с сервера, но не позволяющий нажать Enter......

Все это загадочно.


alt7   (2003-08-13 16:51:00) [8]

1. не знаю, у меня вводит (вот только с enter проблемка)
2. может и нет, но прога уже написана именно на нем (с TIDTCP были проблемы в свое время их так и не устранили.. я много на форумах спрашивал).. а теперь пара доделок надо.. (2 команды от клиента)


Reindeer Moss Eater   (2003-08-13 16:46:00) [9]

брррр...
1.
Вот клиент подключается (имя, пароль) и тут ему на голову постоянно сыпятся значения полей...
И как он (клиент) при этом сможет вводить свои данные?

2.
Ты уверен, что это задача Telnet сервера?


alt7   (2003-08-13 16:40:00) [10]

брррр....

смотри... сервер принимает постоянно данные с другого сервера... потом их обрабатывает и получает значения для полей... эти значения, как только обработаны передаются клиенту... и неважно, что за 5 секунд пришли данные скажем по 3м полям, а по 5ти другим нет...

Вот клиент подключается (имя, пароль) и тут ему на голову постоянно сыпятся значения полей...
к примеру пришло:
номера полей:

1) 2
2) 3
3) ничего не было еще
4) 5, потом пришло 4, потом 6
5) ничего
6) 3, 2, 7, 8
7) 2
8) ничего

клиент вводит LAST и я ему должен передать:
2,3,пусто,6,пусто,8,2,пусто

Отправил это и передаю опять свежепоступающие данные (которые пришли позже)


Reindeer Moss Eater   (2003-08-13 16:29:00) [11]

так во-первых не известно, когда клиенту в голову взбредет написать LAST.

Стоп! Ты хотел отправить данные не дожидаясь ввода.


alt7   (2003-08-13 16:25:00) [12]

так во-первых не известно, когда клиенту в голову взбредет написать LAST.
Во-вторых, как только данные обработаны сервером их нуно отправить клиенту.
В-третьих, как написать обработку сообщения от юзера, таким макаром, чтоб если в данный момент от него ничего не пришло, то идти дальше по коду? (без всяких пауз, время критично)


Reindeer Moss Eater   (2003-08-13 16:19:00) [13]

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


alt7   (2003-08-13 16:07:00) [14]

так ему не надо ничего вводить.. он подключился и данные ему посыпались.. (я где-то выше писал)

а мне теперь надо чтоб клиент мог посмотреть последние данные по 8 полям сразу


Reindeer Moss Eater   (2003-08-13 15:59:00) [15]

дык возращаться надо чтобы отправить клиенту текущую порцию инфо... а иначе ж ему ничего не отправляется...

Клиент еще ничего не ввел. Что ты ему собрался отправлять???


alt7   (2003-08-13 15:58:00) [16]

дык возращаться надо чтобы отправить клиенту текущую порцию инфо... а иначе ж ему ничего не отправляется...

инфа:
8 полей - 8 значений.. необязательно всем приходить вместе, меняются по времени

LAST: передать последние значения по этим 8 полям


Reindeer Moss Eater   (2003-08-13 15:53:00) [17]

клиент же не постоянно вводить что-то должен...
Согласен.
А зачем при этом возвращаться из AThread.Connection.ReadLn?
Можешь объяснить?


alt7   (2003-08-13 15:48:00) [18]

клиент же не постоянно вводить что-то должен...
то есть, если в буфере ничего нет, то этот кусок не должен обрабатываться...
а если ввел то смотрим что ввел, если правильно то высылка данных
в нажатием ENTER клиента чето пока непонятно тоже. как отловить что юзер enter нажал?


Reindeer Moss Eater   (2003-08-13 15:41:00) [19]

При чем здесь таймаут?

и из этой строки уже не выходит

А клиент что-нибудь вводит и завершает это оганичителем?


alt7   (2003-08-13 15:23:00) [20]

и что? по умолчанию стоит время infinite, и из этой строки уже не выходит... я ставил 1сек., но почему-то все равно не выходит


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо