|
|
|
TCP ReadBytes Indy10
|
|||
|---|---|---|---|
|
#18+
X-Cite, а на сервере не надо тогда отправку тоже в цикл заворачивать, если мы кусочками по 100 байт шлем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2019, 11:33 |
|
||
|
TCP ReadBytes Indy10
|
|||
|---|---|---|---|
|
#18+
100 байт - это пример. В данном случае все сообщение.... Можно и 100 Мб отправить одним Write Кусочками только принимаем... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2019, 11:35 |
|
||
|
TCP ReadBytes Indy10
|
|||
|---|---|---|---|
|
#18+
X-Cite, Получается вместо 100 на сервере я указываю свою длину массива байтов. Читаю ее клиентом и в цикле складываю его по кусочкам? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2019, 11:36 |
|
||
|
TCP ReadBytes Indy10
|
|||
|---|---|---|---|
|
#18+
dartveider13, Я думаю в indy есть метод типа Client.ReadAll(Buf, sz); который будет ждать и читать сам внутри до тех пор пока не получит размер sz ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2019, 11:43 |
|
||
|
TCP ReadBytes Indy10
|
|||
|---|---|---|---|
|
#18+
тогда код на клиенте свернется до Код: pascal 1. 2. Кстати на сервере надо делать также... Где гарантия что переданные вами 10 байт, по дороге не разобьются на 2 части и не придут двумя сообщениями в 4 и 6 байт... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2019, 11:44 |
|
||
|
TCP ReadBytes Indy10
|
|||
|---|---|---|---|
|
#18+
X-Cite, ну да согласен. Сейчас будем копать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2019, 11:47 |
|
||
|
TCP ReadBytes Indy10
|
|||
|---|---|---|---|
|
#18+
X-Cite, попробовал сделать так: Сервер: Код: pascal 1. 2. Клиент: Код: pascal 1. 2. Сваливается в Connection Closed Gracefully. В Буфере на сервере 3653 длина, а в sz приходит аж 1010792557... Чет то много ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2019, 12:01 |
|
||
|
TCP ReadBytes Indy10
|
|||
|---|---|---|---|
|
#18+
Socket.Write(Length(Buffer), True); - сколько байт вы передаете здесь. IdTCPClient.Socket.ReadInt64(); - столько байт надо читать здесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2019, 12:08 |
|
||
|
TCP ReadBytes Indy10
|
|||
|---|---|---|---|
|
#18+
X-Cite, здесь нельзя указать количество байт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2019, 12:16 |
|
||
|
TCP ReadBytes Indy10
|
|||
|---|---|---|---|
|
#18+
Дегтярев ЕвгенийВасилий 2Либо не изобретать велосипед с кубическими колесами и перейти на HTTP на существующий rpc-like протокол, а что будет в качестве транспорта дело второстепенное Не совсем. В HTTP есть уже все приколы с длиной ответа, поточность, если вдруг понадобится, стандартизация. Учитывая уровень знаний ТС, намного легче взять уже готовое и на его основе с небольшими доработками сваять нужный функционал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2019, 12:17 |
|
||
|
TCP ReadBytes Indy10
|
|||
|---|---|---|---|
|
#18+
Василий 2, да как то осталась только часть с получением ответа. Не хотелось бы из-за этого полностью менять подход. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2019, 12:24 |
|
||
|
TCP ReadBytes Indy10
|
|||
|---|---|---|---|
|
#18+
Ну вот вопрос решился. Немного надо будет конечно обработать всякие исключения, но получилось примерно так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. Спасибо всем за участе. Отдельное спасибо XCite ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2019, 12:32 |
|
||
|
TCP ReadBytes Indy10
|
|||
|---|---|---|---|
|
#18+
Нужно учитывать, что метод Readln не выбрасывает исключение при ошибке таймаута, а возвращает пустую строку (хотя возможно разное поведение в разных версиях Indy10). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2019, 12:58 |
|
||
|
TCP ReadBytes Indy10
|
|||
|---|---|---|---|
|
#18+
Также нежелательно передавать большой объём данных одним блоком. Должно быть ограничение, например максимум 5 МБ. При приёме также желательно контролировать объём данных, принимаемых с клиента и если InputSize больше 5 МБ, то это может быть атакой на сервер из чужого ПО, в этом случае дочитываем буфер и рвём связь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2019, 13:05 |
|
||
|
TCP ReadBytes Indy10
|
|||
|---|---|---|---|
|
#18+
DmSer, там не такие большие пакетики. В них XML-на. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2019, 13:10 |
|
||
|
TCP ReadBytes Indy10
|
|||
|---|---|---|---|
|
#18+
dartveider13 Код: pascal 1. 2. 3. все будет хорошо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2019, 13:17 |
|
||
|
TCP ReadBytes Indy10
|
|||
|---|---|---|---|
|
#18+
Дегтярев Евгений, ну это ответ на коленке. В реалии я конечно же оборачиваю все это дело в проверки и try ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2019, 15:44 |
|
||
|
TCP ReadBytes Indy10
|
|||
|---|---|---|---|
|
#18+
Если бы ты пересылал строки, то инди бы само разбиралось с передачей. Ну а массивы байт придётся дополнительно обрабатывать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2019, 16:48 |
|
||
|
TCP ReadBytes Indy10
|
|||
|---|---|---|---|
|
#18+
dartveider13, if string(flag) == "true" вспомнилось ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2019, 16:51 |
|
||
|
TCP ReadBytes Indy10
|
|||
|---|---|---|---|
|
#18+
dartveider13X-Cite, здесь нельзя указать количество байт Код: pascal 1. 2. 3. ну или так тоже можно Код: pascal 1. 2. А то какие-то извращения со строками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2019, 18:28 |
|
||
|
TCP ReadBytes Indy10
|
|||
|---|---|---|---|
|
#18+
X-Cite, о спасибо. Действительно извращение со строками ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2019, 06:39 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39847280&tid=2039158]: |
0ms |
get settings: |
5ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
502ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 803ms |

| 0 / 0 |
