Вверх ↑
Этот топик читают: Гость
Ответов: 542
Рейтинг: 12
#1: 2009-01-12 15:05:50 ЛС | профиль | цитата
Хочу зиповать перед отправкой и раззиповать после полчения текстовый массыв.
для этого использовал такую схему
code_11344.txt
Начал сомневатся что эта правильная схема, потому что выдает ошибки а иноглда к некоторим строкам в конец добалвяются краякозаблики всякие.
Нужно ли использовать строковый конвертор перед и после запуска ZLIB?

карма: 0

0
файлы: 1code_11344.txt [597B] [118]
Разработчик
Ответов: 26324
Рейтинг: 2147
#2: 2009-01-12 15:53:21 ЛС | профиль | цитата
afandi, Вот так будет работать. На выходе первого мультика стрим поток. Надо же декомпрессировать, чтобы прочитать



Add(MainForm,2953706,119,105)
{
}
Add(MultiElement,5723933,245,168)
{
@Hint=#11:ZipCompress|
link(onEvent1,13996291:doWork1,[])
}
BEGIN_SDK
Add(EditMulti,905887,21,21)
{
EventCount=1
WorkCount=1
DataCount=1
Width=251
Height=186
link(doWork1,2271267:doConvert,[(49,27)(49,69)])
}
Add(ZLIB,11197681,126,63)
{
link(onStream,905887:onEvent1,[(215,69)(215,27)])
}
Add(Convertor,2271267,77,63)
{
Mode=12
link(onResult,11197681:doCompress,[])
link(Data,905887:Data1,[(83,42)(27,42)])
}
END_SDK
Add(Memo,15078814,182,91)
{
Left=5
Top=10
Width=150
Height=235
}
Add(Memo,5391671,371,147)
{
Left=160
Top=10
Width=150
Height=235
}
Add(Button,13316153,119,168)
{
Left=320
Top=15
link(onClick,9029717:doData,[])
}
Add(DoData,9029717,182,168)
{
link(onEventData,5723933:doWork1,[])
link(Data,15078814:Text,[])
}
Add(MultiElement,13996291,301,168)
{
@Hint=#13:ZipDeCompress|
link(onEvent1,5391671:doText,[])
}
BEGIN_SDK
Add(EditMulti,905887,21,21)
{
EventCount=1
WorkCount=1
Width=251
Height=186
link(doWork1,1234671:doDeCompress,[(63,27)(63,69)])
}
Add(Convertor,3589713,154,56)
{
Mode=11
link(onResult,905887:onEvent1,[(222,62)(222,27)])
}
Add(ZLIB,1234671,105,56)
{
link(onStream,3589713:doConvert,[])
}
END_SDK

карма: 22

0
Ответов: 542
Рейтинг: 12
#3: 2009-01-12 16:00:38 ЛС | профиль | цитата
Поправка. оно то понятно что так правильно но в моем случаю я должен был передавать даннеы между сервером и клиентом.
а режим передачи данных там был строковый. может использовать вашу схему и тип передачи данных выставить потоковый stream
карма: 0

0
Разработчик
Ответов: 26324
Рейтинг: 2147
#4: 2009-01-12 16:07:30 ЛС | профиль | цитата
afandi писал(а):
и тип передачи данных выставить потоковый stream

А, вот оно что, ну попробуй выставить стрим, помни писали, что не очень хорошо оно передает по TCP, но может уже и работает.
Но помни, что данные надо бить, приблизительно по 400 байт, при передаче целиком они будет теряться
карма: 22

0
Ответов: 542
Рейтинг: 12
#5: 2009-01-12 16:10:36 ЛС | профиль | цитата
nesco писал(а):
Но помни, что данные надо бить, приблизительно по 400 байт, при передаче целиком они будет теряться

мама мия еще усложнят придется как его разбивать то по 400 байт?
карма: 0

0
Ответов: 3851
Рейтинг: 159
#6: 2009-01-12 16:26:48 ЛС | профиль | цитата
помнится при типе String данные приходили кусочками, а в Stream - одним большим куском
карма: 0
начавший
0
Разработчик
Ответов: 26324
Рейтинг: 2147
#7: 2009-01-12 16:30:11 ЛС | профиль | цитата
Андрей. писал(а):
а в Stream - одним большим куском

Если вообще приходили. Помнится проблемы там с нулем были, но, вроде, tsdima поправил. Проверять надо. Да и TCP модуль новый, мало кто его тестировал на больших данных
карма: 22

0
Ответов: 3851
Рейтинг: 159
#8: 2009-01-12 16:35:14 ЛС | профиль | цитата
nesco писал(а):
мало кто его тестировал на больших данных
сейчас уже не помню точно, но вроде там проблемы были не с объёмом, а с самой технологией (если можно так сказать) передачи/приёма. У меня терялись и доходили как большие так и маленькие..
карма: 0
начавший
0
Разработчик
Ответов: 26324
Рейтинг: 2147
#9: 2009-01-12 16:41:09 ЛС | профиль | цитата
Андрей. писал(а):
У меня терялись и доходили как большие так и маленькие..

Короче, темный лес, чего у нас работает, чего не работает. Тестеры в отпуске
карма: 22

0
Администрация
Ответов: 15295
Рейтинг: 1519
#10: 2009-01-13 01:14:42 ЛС | профиль | цитата
Андрей. писал(а):
У меня терялись и доходили как большие так и маленькие..

при отсылке данных ввиде строки весь обхем бьется на куски от 4х до 8ми Кб примерно и отсылается такими кусками принимающей стороне, чего судя по всему и наблюдалось(терется там ничего не должно было). При отсылке stream вместе с данными передается и их размер, который позволяет принимающей стороне собрать все в один кусок и выдасть его только после приема последнего байта, что гарантирует целестность данных без напряга для пользователя
карма: 26
1
Голосовали:afandi
Ответов: 3851
Рейтинг: 159
#11: 2009-01-13 14:14:32 ЛС | профиль | цитата
Dilma писал(а):
при отсылке данных ввиде строки весь обхем бьется на куски от 4х до 8ми Кб примерно
в локалке приходило даже кусками по 2кб, ввиду чего я и перешёл на stream..

Dilma писал(а):
При отсылке stream вместе с данными передается и их размер, который позволяет принимающей стороне собрать все в один кусок и выдать его только после приема последнего байта, что гарантирует целестность данных без напряга для пользователя
наблюдал потери почти не зависимо от объёма (припоминаю, что большие терялись всё таки чаще, но статистики маловато)..
карма: 0
начавший
0
Ответов: 2125
Рейтинг: 159
#12: 2009-01-13 19:17:34 ЛС | профиль | цитата
В ранних версиях TCP.pas была ошибка: если при отправке данных их отправилось меньше чем хотелось (а такое возможно), то на это было наплевать. Но сейчас это уже исправлено.
карма: 1

0
12
Сообщение
...
Прикрепленные файлы
(файлы не залиты)