Вверх ↑
Этот топик читают: Гость
Гость
Ответов: 17029
Рейтинг: 0
#1: 2009-02-21 16:45:08 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2025-01-10 23:23:12
карма: 0

0
Ответов: 1088
Рейтинг: 112
#2: 2009-02-21 17:01:58 ЛС | профиль | цитата
Забыл войти.
Весь день у меня война с TCP то данные передаются, но не принимаются, то вываливается Runtime
------------ Дoбавленo:

Поправка: при аналогичных условиях, в другой схеме вываливается следующее:

карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
файлы: 1tcpex.png [8.2KB] [332]
Администрация
Ответов: 15295
Рейтинг: 1519
#3: 2009-02-21 17:53:34 ЛС | профиль | цитата
Sniper36, вообще-то сокеты в HiAsm работают в неблокирующем режиме и при отправке большого объема данный закрывать соединение сразу после doSend нельзя. У меня например при таком соединение даже 300 байт от boot.ini отправится не успевает. Без doClose все оправляется, приходит и работает с диалогом без ошибок
карма: 27
0
Ответов: 1088
Рейтинг: 112
#4: 2009-02-21 18:21:56 ЛС | профиль | цитата
Мда, и как же определить что файл отправлен?
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 2125
Рейтинг: 159
#5: 2009-02-21 18:52:46 ЛС | профиль | цитата
Dilma писал(а):
сокеты в HiAsm работают в неблокирующем режиме

Неправда, я доделывал TSocked.Send, чтобы он посылал всё до конца, т.е. отправка там в цикле, до тех пор, пока не отправится всё. Проблема тут, как мне кажется, несколько иная: при отправке большого блока данных сообщения не обрабатываются, до тех пор, пока всё не отправится, и если принимает та-же программа, то я не уверен, что она не "проспит" сообщение о том, что данные пришли. Чтобы убедиться в этом надо разделить клиент и сервер на два приложения.
Я так и не добился, чтобы TSocked.Send при блокировке отправки обрабатывал сообщения из очереди, поэтому в этой процедуре часть строк закомментирована.
карма: 1

0
Ответов: 1088
Рейтинг: 112
#6: 2009-02-22 13:00:16 ЛС | профиль | цитата
Так будет изменен компонент или мне думать как обойти это?
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Администрация
Ответов: 15295
Рейтинг: 1519
#7: 2009-02-22 13:03:02 ЛС | профиль | цитата
Sniper36 писал(а):
Мда, и как же определить что файл отправлен?

закрывать соединение надо на стороне принимающего, когда точно известно что файл принят. Отдающая сторона об этом узнает при возникновении onDisconnect
карма: 27
0
Ответов: 3851
Рейтинг: 159
#8: 2009-02-22 13:06:38 ЛС | профиль | цитата
а если предполагается длительный сеанс, или это просто механизм?
карма: 0
начавший
0
Ответов: 5227
Рейтинг: 587
#9: 2009-02-22 13:07:47 ЛС | профиль | цитата
Dilma, помнится предлагалось реализовать передачу MT потоков, тогда наверно таких проблем не возникало бы
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Разработчик
Ответов: 26212
Рейтинг: 2138
#10: 2009-02-22 13:14:19 ЛС | профиль | цитата
andrestudio писал(а):
помнится предлагалось реализовать передачу MT потоков

А что, разве сейчас это сделать нельзя, при помощи компонента StreamArray По-моему -- без проблем. Этот компонент специально для этого и разрабатывался
карма: 22

0
Ответов: 1088
Рейтинг: 112
#11: 2009-02-22 13:46:35 ЛС | профиль | цитата
Вот вроде ошибка: попробуйте в примере SendFile.sha бросить на форму большой файл(более 15МБ), он отправится но не будет принят.
С этим как бороться?
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Разработчик
Ответов: 26212
Рейтинг: 2138
#12: 2009-02-22 15:48:20 ЛС | профиль | цитата
Sniper36 писал(а):
С этим как бороться?

Бить на части сам передающий поток. Ничего тут страшного нет.
карма: 22

0
Ответов: 3851
Рейтинг: 159
#13: 2009-02-22 15:53:37 ЛС | профиль | цитата
nesco писал(а):
Бить на части

какого размера?
карма: 0
начавший
0
Ответов: 1088
Рейтинг: 112
#14: 2009-02-22 16:12:00 ЛС | профиль | цитата
nesco писал(а):
Бить на части сам передающий поток. Ничего тут страшного нет.

А нельзя это к компоненте сделать? Не хочется городить огород ради просто корректной доставки файла.
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
14
Сообщение
...
Прикрепленные файлы
(файлы не залиты)