Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2009.11.08;
Скачать: [xml.tar.bz2];

Вниз

Есть ли событие при приеме пакетов клиентом?   Найти похожие ветки 

 
Салат   (2007-08-06 12:58) [0]

Здравствуйте снова, уважаемые! Так получилось, что в моих программах сервер проявляет больше активности, отправляя различные команды клиентам. Подскажите, есть ли событие, которое генерирует IdTCPClient при получении пакетов (с текстом)? В голове одна мысль сделать таймер и в нем tcpClient.ReadLn, но это бред да и лагать будет. Возможно заменить IdTCPClient на сервер? (будут ли два сервера вообще между собой взаимодействовать?)


 
Сергей М. ©   (2007-08-06 13:02) [1]


> есть ли событие, которое генерирует IdTCPClient при получении
> пакетов


Нет.


> сделать таймер и в нем tcpClient.ReadLn, но это бред


Эт точно)


> Возможно заменить IdTCPClient на сервер?


Невозможно.


 
DVM ©   (2007-08-06 14:19) [2]


> Салат   (06.08.07 12:58)  

используй TServerSocket / TClientSocket - они могут работать в асинхронном режиме на сообщениях - имхо для твоей задачи самое то.


 
Сергей М. ©   (2007-08-06 14:33) [3]


> в моих программах сервер проявляет больше активности


Это вовсе не повод и не обязательное требование для задействования событийного механизма на стороне клиента.


 
umbra ©   (2007-08-06 14:48) [4]

сервер вообще не должен проявлять активности, только выполнять команды клиента. Что-то неверно в проекте :)


 
Сергей М. ©   (2007-08-06 14:50) [5]


> umbra ©   (06.08.07 14:48) [4]


Ну эт ты явно загнул)

Сервер серверу все-таки рознь)


 
DVM ©   (2007-08-06 15:18) [6]


> сервер вообще не должен проявлять активности, только выполнять
> команды клиента. Что-то неверно в проекте :)

Нет не всегда. В качестве примера могу привести сервер входящий в большинство цифровых АТС - так называемый Call Manager. Клиенты подключаются к серверу, могут отдавать команды, получать результаты выполнения команд, но, в то же время сервер сам информирует клиентов о наступлении определенных событий, например звонках. Такое реализовано, например, у CISCO.

Есть и другие примеры, где такое поведение сервера уместно.


 
umbra ©   (2007-08-06 17:18) [7]


> информирует клиентов

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


 
Салат   (2007-08-06 17:58) [8]

На моем сервере происходит некий процесс а в клиентах отображается информация об этом процессе плюс они на него могут влиять. Вот и упирается все в то, что в Indy TCP клиенте нет событий, которые происходили бы автоматически при приеме данных. TServerSocket и TClientSocket в delphi 7 нет, вместо них есть TcpClient и TcpServer. Видимо, придется переходить на них.


 
umbra ©   (2007-08-06 18:15) [9]

>
> Вот и упирается все в то, что в Indy TCP клиенте нет событий,
>  которые происходили бы автоматически при приеме данных.
>

так и приема никакого не будет, пока Вы метод чтения не вызовете. Зачем же нужно событие, которое случается только после явного вызова метода? Просто читайте из сокета время от времени, как только что-то придет - узнаете после вызова.


 
Салат   (2007-08-06 19:36) [10]


> > сделать таймер и в нем tcpClient.ReadLn, но это бред
> Эт точно)

А вообще в D7 все таки есть TClientSocket и TServerSocket, просто они не зарегистрированы. Программировать на них предельно просто и нужную функциональность обеспечивают. Я нашел свою прелесть :)


 
Сергей М. ©   (2007-08-07 08:55) [11]


> Вот и упирается все в то, что в Indy TCP клиенте нет событий,
>  которые происходили бы автоматически при приеме данных


В большинстве случаев эти события нафих не нужны.
Твой случай скорее всего не исключение.


 
valenok ©   (2008-01-29 12:10) [12]

Я сейчас столкнулся с той же проблемой - пишу чат для локальной сети.
Думаю, что в этом случае придется создавать потоки с Readln - ом.


 
Сергей М. ©   (2008-01-29 12:12) [13]


> придется создавать потоки


Зачем ?


 
Slym ©   (2008-01-29 13:41) [14]

Сергей М. ©   (29.01.08 12:12) [13]
Зачем ?

потому что valenok © :)
все уже создано до вас...


 
Anatoly Podgoretsky ©   (2008-01-29 14:31) [15]


>  в то же время сервер сам информирует клиентов о наступлении
> определенных событий, например звонках. Такое реализовано,
>  например, у CISCO.

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


 
DiamondShark ©   (2008-01-29 16:19) [16]

Вообще-то, сервер -- это процесс, владеющий слушающим сокетом, клиент, соответственно, -- процесс, инициировавший создание соединения.

После акцепта соединения процессы не различаются вообще никак.

Вся остальная псевдоклассификация -- от лукавого.


 
ananast   (2008-05-03 05:44) [17]

вы о чем тут?))как вообще делфи включить?)))


 
Сергей М,   (2008-05-03 19:25) [18]


> как вообще делфи включить?


Кнопочку нажать)



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2009.11.08;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.006 c
3-1229385486
Dem
2008-12-16 02:58
2009.11.08
ТCalendar


3-1229276722
Kabal
2008-12-14 20:45
2009.11.08
Как сохранить результат SQL запроса в таблицу Paradox?


8-1198080757
Alex Pan
2007-12-19 19:12
2009.11.08
Где найти компоненет для видеоввода


4-1221305909
Aggressor
2008-09-13 15:38
2009.11.08
Start->Run vs Start->cmd


15-1245951607
Petr V. Abramov
2009-06-25 21:40
2009.11.08
работа кипит :)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский