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

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.004 c
2-1227282378
СиничЪ
2008-11-21 18:46
2009.01.04
Цветной текст в Form.Caption


2-1227261354
Gurd
2008-11-21 12:55
2009.01.04
Шапка stringGrid как Excel


15-1225441518
Vlad Oshin
2008-10-31 11:25
2009.01.04
Работа. Программиста никому не надо? :)


2-1227191689
checkmate-maker
2008-11-20 17:34
2009.01.04
TBlobByteData


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





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский