Текущий архив: 2003.07.10;
Скачать: CL | DM;
Вниз
Можно ли заставить TIdTCPConnection сообщать о приходе данных? Найти похожие ветки
← →
Reindeer Moss Eater (2003-04-30 20:20) [40]$hade © (30.04.03 17:03)
2Reindeer Moss Eater
вполне согласен,но все же иногда надо что либо послать клиенту без его запроса...к примеру сообщение от админа сервера....в то время когда клиент заливает 50Mb файл на сервер...:-)
Все правильно. Нужно иногда посылать сообщения от админа клиенту.
Только это не означает, что делать это надо с помощью того же самого TCP соединения, по которому качается файл размером 50 м.
Делается это в дополнительном соединении, работающем по точно такой же схеме.
← →
Инди (2003-04-30 20:45) [41]Удалено модератором
Примечание: Не по делу можно в "Потрепаться"
← →
$hade © (2003-05-01 11:38) [42]2Reindeer Moss Eater (30.04.03 20:20)
>Делается это в дополнительном соединении, работающем по точно такой же схеме.
ну давай ща сделаем 25 подключений на каждого клиента...:-)
2Zelius © (30.04.03 19:11)
Конечно это будет работать, только вот многопоточности не будет, будут чувствоваться тормоза при больших пересылках ( а если еще и через интернет, то и подавно)
И почему же через интернет тормоз будет чуствоваться??? Попробуй отослать от сервера клиенту файл в 1 Mb по модему...выполнение Connection.WriteBuffer закончится намного быстрей чем данные примет клиент....()
, и потом, есть шанс, что связь оборвется в момент когда ты захочешь что-нибудь послать, в этом случае есть шанс получить ошибку что-то типа Access Violation.
скорее это будет "Socket Error #..."
и не ошибка а исключение...:-)
в обработчике OnDisconnect удаляешь из ActiveClients (в моем случае) указатель и все...
Поток уничтожается только после обработки OnDisconnect...
← →
$hade © (2003-05-01 12:02) [43]кста....посмотри Demos"ы для Indy (можешь скачать на www.nevrona/indy)
там есть пример чата(клиент/сервер)...как раз там все и сделано....
← →
$hade © (2003-05-01 12:05) [44]т.е. www.nevrona.com/indy
← →
Zelius © (2003-05-02 19:54) [45]
> Reindeer Moss Eater (30.04.03 20:11)
И я тебе про сервер, или ты считаешь, что аськин сервер не отправляет сообщения?
> Reindeer Moss Eater (30.04.03 20:20)
у меня было два соединения, но мне такая схема не понравилась. Зачем делать два, когда можно обойтись одним?
← →
Zelius © (2003-05-02 19:57) [46]
> И почему же через интернет тормоз будет чуствоваться???
> Попробуй отослать от сервера клиенту файл в 1 Mb по модему...выполнение
> Connection.WriteBuffer закончится намного быстрей чем данные
> примет клиент....()
а теперь умножь 1 мб на 10 клиентов!
> кста....посмотри Demos"ы для Indy (можешь скачать на www.nevrona/indy)
> там есть пример чата(клиент/сервер)...как раз там все и
> сделано....
Да, действительно там так и сделано... Хотя это странно... Вобщем, после праздников я попробую такую схему, но немешало бы теорией подкрепиться!
← →
$hade © (2003-05-02 21:06) [47]>Да, действительно там так и сделано... Хотя это странно...
Я тоже вначале сомневался...а сейчас - 5-25 клиентов цепляются к серваку(больше просто не надо)...и никаких проблем нет...и тормозов не замечаю...
>Вобщем, после праздников я попробую такую схему, но немешало бы теорией подкрепиться!
А как бы я хотел найти теорию...но нет у меня 100 евро которые просят авторы за месяц чтения какой то их онлайн книги...:-((
А по поводу "че та мне не нравятся эти Indy" и по поводу их глючности...да - есть конечно - но в основном - ты просто не умеешь их готовить....:-))
← →
Reindeer Moss Eater (2003-05-03 10:42) [48]И я тебе про сервер, или ты считаешь, что аськин сервер не отправляет сообщения?
Уверен, что он делает это по своей инициативе, а не по запросу клиента?
← →
Zelius © (2003-05-03 20:02) [49]
> Reindeer Moss Eater (03.05.03 10:42)
Нет.
← →
Zelius © (2003-05-03 20:05) [50]
> А по поводу "че та мне не нравятся эти Indy" и по поводу
> их глючности...да - есть конечно - но в основном - ты просто
> не умеешь их готовить....:-))
А ты пробовал сделать на Инди скачку файла по HTTP в несколько потоков? Если когда-нибудь попробуешь - тебя ждут сюрпризы :)
← →
Инди (2003-05-03 23:29) [51]ой-ей-ей! А давай я на тебе одном чего-нибудь в несколько потоков сделаю! В каждом потоке своя Инди должна быть! Вот.
← →
Reindeer Moss Eater (2003-05-04 11:14) [52]Zelius ©
Представь картину:
Клиент начал качать файл с сервера. Сервер бьет файл на блоки и отдает клиенту. При этом сервер хочет отставить за собой право слать клиенту в ЛЮБОЙ момент времени сообщения (используя то же самое соединение). Что отсюда следует?
То, что КАЖДЫЙ блок пересылаемого файла сервер вынужден снабжать заголовком и маркером конца что бы клиент понял что же это такое он прочитал.
И чем это лучше отдельного соединения?
← →
Zelius © (2003-05-04 14:01) [53]
> Reindeer Moss Eater (04.05.03 11:14)
Для этого варианта да, лучше отдельное соединение. А вообще, как раз для это и существует в сокетах OOB.
← →
$hade © (2003-05-05 06:23) [54]Reindeer Moss Eater (04.05.03 11:14)
Zelius ©
Представь картину:
Клиент начал качать файл с сервера. Сервер бьет файл на блоки и отдает клиенту. При этом сервер хочет отставить за собой право слать клиенту в ЛЮБОЙ момент времени сообщения (используя то же самое соединение). Что отсюда следует?
То, что КАЖДЫЙ блок пересылаемого файла сервер вынужден снабжать заголовком и маркером конца что бы клиент понял что же это такое он прочитал.
И чем это лучше отдельного соединения?
А чем хуже?? Вполне хватит заголовка в 5 байт...
[команда][размер данных][собсно данные]
Та же ICQ по такому протоколу и работает(только заголовок посложней...)
← →
Reindeer Moss Eater (2003-05-05 09:03) [55]А чем хуже?? Вполне хватит заголовка в 5 байт...
Да ничем, кроме того, что этот заголовок надо приклеивать ко всем блокам, пересылаемым по сети. Получаем:
1. Бесполезное увеличение трафика
2. Усложнение своего протокола
← →
Reindeer Moss Eater (2003-05-05 09:04) [56]И чем это лучше отдельного соединения?
← →
$hade © (2003-05-05 11:22) [57]Получаем:
1. Бесполезное увеличение трафика
не так уж и на много увеличение...(если павильно выбрать размер блока...)
ну и насчет бесполезности я бы тоже поспорил....
2. Усложнение своего протокола
согласен...есть такое...но опять же если правильно подойти к этому - не так уж это и усложнится....
зато в эти 5б ты можешь засунуть столько команд....
И чем это лучше отдельного соединения?
а ты не думал что есть всякие прокси,фаирволы и т.д.??
и открывать по 2 порта не всегда возможно...
зы: приведи ты пример проги работающей по 2 соединениям...по твоему алгоритму...
← →
Reindeer Moss Eater (2003-05-05 11:28) [58]а ты не думал что есть всякие прокси,фаирволы и т.д.??
и открывать по 2 порта не всегда возможно...
Это больше относится к динамическим номерам портов, что автору не надо на самом деле
зы: приведи ты пример проги работающей по 2 соединениям...по твоему алгоритму...
Любой ftp клиент, Оракл в dedicated mode, ....
← →
Zelius © (2003-05-05 15:35) [59]Имхо, если можно обойтись одним соединением, то и надо им обходиться.
Спасибо $hade, надоумил, как можно работать с Индей.
← →
Reindeer Moss Eater (2003-05-05 16:58) [60]Так никто и не говорил, что нельзя обойтись одним.
Не вызвай методов чтения с idTimeOutInfinity а в промежутках проверяй не ли в буфере данных для клиента (сообщений ему).
← →
$hade © (2003-05-06 06:02) [61]Ну наконец то пришли к какому то выводу...:-) А то развели тут :-)
Страницы: 1 2 вся ветка
Текущий архив: 2003.07.10;
Скачать: CL | DM;
Память: 0.59 MB
Время: 0.02 c