Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
3-31146
sergey32
2003-06-18 14:57
2003.07.10
Ошибка при открытии запроса через ADODataSet


14-31443
Malder
2003-06-21 21:57
2003.07.10
Посоветуйте короткие фантастические рассказы


3-31073
LittleGirly
2003-06-16 10:22
2003.07.10
Конфигурирование BDE


4-31579
Still Swamp
2003-05-08 18:46
2003.07.10
Thread


3-31093
Falendysh
2003-06-15 20:51
2003.07.10
Возникает ошибка Missing Right Quote