Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.01.04;
Скачать: CL | DM;

Вниз

TidTCPClient и мнгозадачность   Найти похожие ветки 

 
Чудак   (2008-11-19 23:29) [0]

Делаю клиента на TidTCPClient
нужно организовать отновременную передачу данных(файлы) и сообщений
Это возможно? и Как это организовать?

файлы отслылаю в потоке по TidTCPClient.writestream
скорее у меня не правильная оранизация пересылки данных, наставте на путь истинный


 
DVM ©   (2008-11-20 00:09) [1]


> Делаю клиента на TidTCPClient

Клиента к чему?


> Это возможно?

Возможно


> Как это организовать?

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


 
Чудак   (2008-11-20 00:22) [2]

Клиент с своему серверу
прием идет atread.connection.readl() и по нему определяю что куда

передаю так
TidTCPClient.writeln(это сообщение)
TidTCPClient.writeln(само сообщение)
в потоке передача файла
TidTCPClient.writeln(это файл)
TidTCPClient.writestream(сам файл)
так нифига не работает

Куда копать?


 
Германн ©   (2008-11-20 01:23) [3]


> Делаю клиента

А сервер тоже твой? Т.е. тобой сделанный?


 
Eraser ©   (2008-11-20 03:02) [4]

> [0] Чудак   (19.11.08 23:29)


> Как это организовать?

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


 
Чудак   (2008-11-20 13:15) [5]


> Германн ©   (20.11.08 01:23) [3]
>
> > Делаю клиента
>
> А сервер тоже твой? Т.е. тобой сделанный?

Да мой
И в зависимости от сообщения происходит определеное действие
т.е. TidTCPServer.readln() и выбираем что делаем!


> Eraser ©   (20.11.08 03:02) [4]
> > [0] Чудак   (19.11.08 23:29)
>
>
> > Как это организовать?
>
> лучше это реализовать отдельными потоками, никак не связанными
> друг с другом - в каждом потоке создается экземпляр TidTCPClient
> и работает с сервером.

т.е. один поток со своими коннектами на сообщения а второй на передачу файлов?
т.е. получается у нас будет несколько TidTCPClient ов?
А может тогда проще два TidTCPClient"а бросит на форму и ими орудовать?
А на сервере из-за этого код не придется усложнять?


 
Сергей М. ©   (2008-11-20 13:25) [6]


> может тогда проще два TidTCPClient"а бросит на форму и ими
> орудовать?


Для сервера это будет два независимых клиентских соединения.


> на сервере из-за этого код не придется усложнять?
>


см. выше, со всеми вытекающими последствиями.

Ну и с требованием "одновременности" на стороне клиента придется распрощаться.
Максимум чего при этом можно добиться - "попеременность".


 
Чудак   (2008-11-20 13:58) [7]

Как я понял:
1. одномременно посылась сообщения и файлы с клиента нельзя
2. Чтобы это организовать нужно на клиенте 2 компонента TidTCPClient и на сервере тоже 2 компонента TidTCPServer, один для сообщений второй для файлов???
3. А если отправку файла организовать дмумя потоками Ttread-это ускорит скорость передачи файла по сети?


 
KilkennyCat ©   (2008-11-20 14:10) [8]


> если отправку файла организовать дмумя потоками Ttread-это
> ускорит скорость передачи файла по сети?


Конечно. Именно так сделали из 10 МБ сети 100 МБ. А потом подумали, и еще потоков насоздавали, и теперь гигабит.


 
Сергей М. ©   (2008-11-20 14:49) [9]


> Чудак   (20.11.08 13:58) [7]


> 1.


Попеременно есть частный случай одновременно.


> 2.


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

В любом случае достаточно одного TidTCPServer.


 
Сергей М. ©   (2008-11-20 14:53) [10]


> Чудак   (20.11.08 13:58) [7]


> 3.


Нет.


 
Чудак   (2008-11-20 14:58) [11]

По поводу 3 мнения разошлись
3. А если отправку файла организовать дмумя потоками Ttread-это ускорит скорость передачи файла по сети?

Вопрос как ускорить передачу файла по сети????


 
Сергей М. ©   (2008-11-20 14:59) [12]


> По поводу 3 мнения разошлись


Строго наоборот)


 
Чудак   (2008-11-20 15:05) [13]

А можно как нибудь програмно ускорить передачу файла по сети????


 
Сергей М. ©   (2008-11-20 15:08) [14]

Можно. Сожми файл и передавай/принимай его сжатым - размер сжатого файла обычно меньше несжатого, значит при прочих равных условиях он будет передан/принят быстрей.


 
Чудак   (2008-11-20 18:05) [15]

Возможно это глупый вопрос, но:
А зачем тогда менеджежы закачек качают в несколько потоков???
или протокол шттп не использует тсп соедениние:)???


 
Сергей М. ©   (2008-11-20 19:35) [16]


> зачем тогда менеджежы закачек качают в несколько потоков?


Для параллельной "закачки" они это делают.


> протокол шттп не использует тсп соедениние:)?


Использует.


 
sniknik ©   (2008-11-20 19:46) [17]

они не только в разных потоках, они еще и с разных зеркал могут...

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


 
Чудак   (2008-11-20 20:09) [18]

Всем Спасибо большое, вразумили



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

Текущий архив: 2009.01.04;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.012 c
8-1186560384
ZMRaven
2007-08-08 12:06
2009.01.04
Подвижное изображение?


15-1225662065
Сатир
2008-11-03 00:41
2009.01.04
США начинают информационную войну в Рунете


9-1176419505
Gabriel de Montgomery
2007-04-13 03:11
2009.01.04
Сохранение карты


2-1227600006
bioss
2008-11-25 11:00
2009.01.04
Мастера, подкажите пожалуйста


2-1226488903
Vova
2008-11-12 14:21
2009.01.04
DeleteFile