Что нового

TCP как передать большой объем данных

avtoIT

Новичок
Сообщения
94
Репутация
0
Есть сервер, который принимает несколько параметром (в обычной кодировке) и потом 100-1000 кб картинку в бинарном коде. Проблема в том, что при такой реализации картинка... ну просто не загружается даже при 9999999999999 символов в TCPRecv. Но как вы поняли используется небинарный режим. Я правильно понимаю, что для передачи картинки нужно всю строку превратить в бинарный код?
Но тогда вопрос: как потом разбить эт на сервере на параметр 1, 2 и картинка
Т.е. сейчас передача примерно такая
Код:
TCPSend ($iSocket, 'value1||*||' & 'value2||*||' & 'код картинки bin')

Если передать все в таком виде:
I вариант
Код:
TCPSend ($iSocket, BinaryToString('value1||*||' & 'value2||*||') & 'код картинки bin')

II вариант
Код:
TCPSend ($iSocket, BinaryToString('value1||*||' & 'value2||*||' & 'код картинки bin'))


В 1-ом вариант, как узнать где символы разделители (||*||)
Во 2-ом варианте - не получится ли это очень-очень длинный код, ведь к коду картинки преобразование в бинарный режим применилась 2 раза, что ни есть хорошо
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Re: TCP перегрузка памяти Autoit

Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

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

С уважением, ваш Глобальный модератор.
 

Prog

Продвинутый
Сообщения
537
Репутация
65
avtoIT [?]
Проблема в том, что при такой реализации картинка... ну просто не загружается даже при 9999999999999 символов в TCPRecv.
Вообще не загружается или загружается только частично?
Создание протокола прикладного уровня
Есть еще один момент, на который необходимо обратить внимание. Пакет может быть принят не за один раз (вызов принимающей функции из сети) или наоборот, за раз может быть принято несколько пакетов, причем последний из них может быть принят не полностью.
 
Автор
A

avtoIT

Новичок
Сообщения
94
Репутация
0
Prog сказал(а):
avtoIT [?]
Проблема в том, что при такой реализации картинка... ну просто не загружается даже при 9999999999999 символов в TCPRecv.
Вообще не загружается или загружается только частично?
Там вылазит ошибка AutoIT: "слишком много данных" и он вылетает. (если интересно, могу сделать скриншот)

Статейка занятная... Только вот все переписывать уже не сильно хочется:smile: В дальнейшем согласен, это стоит сделать, хотя бы ради "универсальности":smile:
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Вот пример (был на форуме).
 
Верх