![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TidTCPClient и мнгозадачность [D7, XP]
Чудак © (2008-11-19 23:29:00)Делаю клиента на TidTCPClient
нужно организовать отновременную передачу данных(файлы) и сообщений
Это возможно? и Как это организовать?
файлы отслылаю в потоке по TidTCPClient.writestream
скорее у меня не правильная оранизация пересылки данных, наставте на путь истинный
Чудак (2008-11-20 20:09:00) [1]Всем Спасибо большое, вразумили
sniknik (2008-11-20 19:46:00) [2]они не только в разных потоках, они еще и с разных зеркал могут...
сервера часто ограничивают скорость одного потока, в этом случае много поточное скачивание действительно даст прирост скорости... (сумма отдельных, но не больше общей ширины канала)
но это просекли, и сервера еще стали и количество потоков с одного IP ограничивать... типа а фиг вам.
теперь ждем пока менеджеры научатся каждый поток через отдельный прокси со своим IP пускать...
:о)
Сергей М. (2008-11-20 19:35:00) [3]
> зачем тогда менеджежы закачек качают в несколько потоков?
Для параллельной"закачки" они это делают.
> протокол шттп не использует тсп соедениние:)?
Использует.
Чудак (2008-11-20 18:05:00) [4]Возможно это глупый вопрос, но:
А зачем тогда менеджежы закачек качают в несколько потоков???
или протокол шттп не использует тсп соедениние:)???
Сергей М. (2008-11-20 15:08:00) [5]Можно. Сожми файл и передавай/принимай его сжатым - размер сжатого файла обычно меньше несжатого, значит при прочих равных условиях он будет передан/принят быстрей.
Чудак (2008-11-20 15:05:00) [6]А можно как нибудь програмно ускорить передачу файла по сети????
Сергей М. (2008-11-20 14:59:00) [7]
> По поводу 3 мнения разошлись
Строго наоборот)
Чудак (2008-11-20 14:58:00) [8]По поводу 3 мнения разошлись
3. А если отправку файла организовать дмумя потоками Ttread-это ускорит скорость передачи файла по сети?
Вопрос как ускорить передачу файла по сети????
Сергей М. (2008-11-20 14:53:00) [9]
> Чудак (20.11.08 13:58) [7]
> 3.
Нет.
Сергей М. (2008-11-20 14:49:00) [10]
> Чудак (20.11.08 13:58) [7]
> 1.
Попеременно есть частный случай одновременно.
> 2.
Два TidTCPClient потребуются для двух независимых соединений, каждое из которых организовано в отдельном кодовом потоке
В любом случае достаточно одного TidTCPServer.
KilkennyCat (2008-11-20 14:10:00) [11]
> если отправку файла организовать дмумя потоками Ttread-это
> ускорит скорость передачи файла по сети?
Конечно. Именно так сделали из 10 МБ сети 100 МБ. А потом подумали, и еще потоков насоздавали, и теперь гигабит.
Чудак (2008-11-20 13:58:00) [12]Как я понял:
1. одномременно посылась сообщения и файлы с клиента нельзя
2. Чтобы это организовать нужно на клиенте 2 компонента TidTCPClient и на сервере тоже 2 компонента TidTCPServer, один для сообщений второй для файлов???
3. А если отправку файла организовать дмумя потоками Ttread-это ускорит скорость передачи файла по сети?
Сергей М. (2008-11-20 13:25:00) [13]
> может тогда проще два TidTCPClient"а бросит на форму и ими
> орудовать?
Для сервера это будет два независимых клиентских соединения.
> на сервере из-за этого код не придется усложнять?
>
см. выше, со всеми вытекающими последствиями.
Ну и с требованием "одновременности" на стороне клиента придется распрощаться.
Максимум чего при этом можно добиться - "попеременность".
Чудак (2008-11-20 13:15:00) [14]
> Германн © (20.11.08 01:23) [3]
>
> > Делаю клиента
>
> А сервер тоже твой? Т.е. тобой сделанный?
Да мой
И в зависимости от сообщения происходит определеное действие
т.е. TidTCPServer.readln() и выбираем что делаем!
> Eraser © (20.11.08 03:02) [4]
> > [0] Чудак (19.11.08 23:29)
>
>
> > Как это организовать?
>
> лучше это реализовать отдельными потоками, никак не связанными
> друг с другом - в каждом потоке создается экземпляр TidTCPClient
> и работает с сервером.
т.е. один поток со своими коннектами на сообщения а второй на передачу файлов?
т.е. получается у нас будет несколько TidTCPClient ов?
А может тогда проще два TidTCPClient"а бросит на форму и ими орудовать?
А на сервере из-за этого код не придется усложнять?
Eraser (2008-11-20 03:02:00) [15]> [0] Чудак (19.11.08 23:29)
> Как это организовать?
лучше это реализовать отдельными потоками, никак не связанными друг с другом - в каждом потоке создается экземпляр TidTCPClient и работает с сервером.
Германн (2008-11-20 01:23:00) [16]
> Делаю клиента
А сервер тоже твой? Т.е. тобой сделанный?
Чудак (2008-11-20 00:22:00) [17]Клиент с своему серверу
прием идет atread.connection.readl() и по нему определяю что куда
передаю так
TidTCPClient.writeln(это сообщение)
TidTCPClient.writeln(само сообщение)
в потоке передача файла
TidTCPClient.writeln(это файл)
TidTCPClient.writestream(сам файл)
так нифига не работает
Куда копать?
DVM (2008-11-20 00:09:00) [18]
> Делаю клиента на TidTCPClient
Клиента к чему?
> Это возможно?
Возможно
> Как это организовать?
Данные надо передавать порциями. Каждая такая порция должна содержать информацию о типе данных, размере и.т.д. ну и сами данные. Таким образом можно будет передавать все одним потоком. На принимающем конце разгребать что куда.