Вверх ↑
Этот топик читают: Гость
Ответов: 4628
Рейтинг: 749
#46: 2014-05-25 14:07:59 ЛС | профиль | цитата
Оправка - StreamToStr. Большие файлы - в цикле частями (рекомендуется модифицированный DataToFile)
Прием - тот же DataToFile.
карма: 26

0
Ответов: 1343
Рейтинг: 31
#47: 2014-05-25 14:31:49 ЛС | профиль | цитата
Netspirit писал(а):
Прием - тот же DataToFile.


НЕЛЬЗЯ говорю же, что уже клиента нельзя модифить, а только лишь сервер

Netspirit писал(а):
Большие файлы


ммм большие это какие?

мой файл максимум весит 100кб
карма: 2

0
Ответов: 4628
Рейтинг: 749
#48: 2014-05-25 16:28:04 ЛС | профиль | цитата
Rysik писал(а):
клиента нельзя модифить
Не важно. Это всего лишь значит, что протокол обмена с клиентом известен. Ответ тот же.

Большие - это те, к которым невозможно применить StreamToStr, потому что не поместится в ОЗУ. Не рекомендую больше 100 Мб (при 3.5 Гб RAM у меня получается и 1200 Мб, но это, вероятно, зависит от фрагментированности адресного пространства).
[offtop]Если захочешь поспорить - марш сюда: [url]forum.html?q=3&t=63938[/url][/offtop]

карма: 26

1
Голосовали:Rysik
Ответов: 4628
Рейтинг: 749
#49: 2014-05-27 12:39:43 ЛС | профиль | цитата
Обновлены компоненты

TCPClient
Добавлены свойства AsyncConnect, SendTimeout, AutoReceive. Добавлена нижняя точка Socket.

TCPServer
Добавлены свойство SendTimeout и нижняя точка CurSocket

Исправлены некоторые потенциальные ошибки.

Свойство AsyncConnect добавлено потому, что после включения в предыдущей версии безусловного асинхронного подключения оказалось сложным, например, реализовать в цикле последовательность "выбрать адрес-подключиться-отправить команду-отключиться".

Свойство SendTimeout добавлено потому, что в предыдущих версиях поток, отправляющий данные, мог зависать бесконечно, если клиент не принимал данные. Прерваться такой поток мог только в случае разрыва соединения.
карма: 26

1
Голосовали:Konst
Ответов: 1343
Рейтинг: 31
#50: 2014-05-27 16:59:46 ЛС | профиль | цитата
а точку PROGRESS нельзя добавить? ДЛЯ СЕРВЕРА

ну что бы видеть как отсылаеться файл клиентам если отсылаеться вообще а то так ничё не видно, тоесть пусть даже есть onsend то от него толку никакого...
карма: 2

0
Ответов: 4628
Рейтинг: 749
#51: 2014-05-27 17:11:24 ЛС | профиль | цитата
Теоретически можно. При отправке сразу нескольким клиентам событие будет показывать попеременно для каждого клиента с выдачей CurClientID.
Придется также и в клиенте сделать.
карма: 26

0
Гость
Ответов: 17029
Рейтинг: 0
#52: 2014-05-28 13:24:19 правка | ЛС | профиль | цитата


Редактировалось 9 раз(а), последний 2022-09-20 00:17:37
карма: 0

0
Ответов: 4628
Рейтинг: 749
#53: 2014-05-28 14:53:02 ЛС | профиль | цитата
Обновил компоненты: добавил события onProgress, консольные примеры переделал без использования компонента MainLoop. Некоторые внутренние оптимизации.
карма: 26

1
Голосовали:Rysik
Ответов: 2059
Рейтинг: 132
#54: 2014-05-28 17:43:03 ЛС | профиль | цитата
Мастеру - на заметку.
(В каком-то журнале была такая рубрика.)
Речь идет о Thread, в начале упоминалось.
Все таки вернулся к старой версии.
hiThread_new
code_33696.txt

hiThread_old.pas
code_33697.txt
Глубоко копать не было времени, но в новой версии коллизии с памятью, или со стеком.
Это проявляется когда запущенны несколько потоков, разумеется и главный, и один из них синхронизирован с главным.
Однако, может это и не причина (синхронизация одного из потоков с главным) падения программы.
Но вернувшись к старому Thread, теперь стабильности работы позавидуют и кремлёвские часы.
Однако и новая версия - имеет место быть. В простых случаях новый вариант даже предпочтительней, смотря какая задача стоит.
Для примера, если интересно, выложу программу. Однако, - очень большая ~ 15. Одним sha не обойтись.

карма: 6

0
файлы: 2code_33696.txt [1.8KB] [512], code_33697.txt [1.8KB] [512]
Ответов: 4628
Рейтинг: 749
#55: 2014-05-28 18:03:56 ЛС | профиль | цитата
Надо внимательно анализировать схему. Не знаю, почему старый поток работает лучше, но новый очень активно используется в данных TCP компонентах. В сервере создается один поток для ожидания подключений, на каждое подключение создаётся по потоку, принимающему данные. Плюс, ещё и при асинхронной отправке данных создается по потоку на каждого клиента. И всё это совместно работает. Конечно, в коде, где только можно, подстелил соломки и, подозреваю, не всё ещё предусмотрел, но во время тестов вылетов не обнаруживаю.
карма: 26

0
Ответов: 2059
Рейтинг: 132
#56: 2014-05-28 19:34:26 ЛС | профиль | цитата
Надо внимательно анализировать схему.

Несомненно.
У меня не используется TCP.
Напротив, я где-то писал, что в определённых моментах это "то, что доктор прописал" (новый).
Я имею в виду [offtop](а как нужно писать "ввиду"? слитно, или раздельно? А как правильно, - "нужно", или "надо"?)[/offtop]что выше сказано. И не только в случае TCP!
Я к тому, что - имеет место быть, и не только...
Я просто сделал два (вернее - оформил,как) компонента.
карма: 6

0
Гость
Ответов: 17029
Рейтинг: 0
#57: 2014-06-30 21:11:54 правка | ЛС | профиль | цитата


Редактировалось 7 раз(а), последний 2022-09-20 00:13:57
карма: 0

0
Ответов: 4628
Рейтинг: 749
#58: 2014-07-01 11:57:04 ЛС | профиль | цитата
Да, криво. Положить вручную файлы *.pas в папку ElementsDelphicode
карма: 26

0
Ответов: 48
Рейтинг: 0
#59: 2014-07-21 02:26:36 ЛС | профиль | цитата
Всем привет. Подскажите пожалуйста, не могу разобраться(( Запускаю сервер + клиент на одном компе, порт и ip (127.0.0.1) оставляю без изменений, при этом все работает, клиент конектится к серверу. Но когда сервер оставляю на одном компе а клиента запускаю на другом, ни как не хочет соединяться. При этом я конечно меняю на клиенте ip сервера который смотрит в интернет, но соединения нет. Может я что то не так делаю?
карма: 0

0
Ответов: 817
Рейтинг: 52
#60: 2014-07-21 11:48:07 ЛС | профиль | цитата
ruin писал(а):
Может я что то не так делаю?

Может что то и не так.

Включаю телепатию
Видимо у тебя затык на уровне сети.
Для начала нарисуй топологию твоей сети (можешь выложить здесь - разберемся быстрее) и потом уже наглядно сможешь увидеть где у тебя затык.
карма: 1

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