Форум: "Сети";
Текущий архив: 2011.07.31;
Скачать: [xml.tar.bz2];
ВнизСкорость передачи строк через TTcpServer - TTcpClient Найти похожие ветки
← →
kotyara (2009-04-20 17:44) [0]Нужно передать список переменных (набор строк в виде Name=Value) от сервера к клиенту (и наоборот) по каналу "TTcpServer - TTcpClient".
Собственно передачу данных я отладил хорошо и проблем со структурированными данными не возникает.
Проблема возникла только со скоростью передачи строк в любом виде, когда возникла необходимость передавать текст.
Ниже приведена выдержка из протокола обмена сервера с клиентами, где видно, что на передачу 33 строк общим объемом 2172 байт уходит аж 7 секунд!
Передаю строки "кусочками" (блоками) по 63 символа (как ShortString[63]). Пробовал и по 1 байту, и по 255 и по 128.... разницы практически нет!
Пробовал чередовать передачу блока данных с премом ответа от клиента (скажем эффективную длину только что полученного блока),
передавать блоки непрерывно - нечего не помогает.
18.04.2009 8:17:43 Соединение с компьютером "HOST" [IP-ADDR] закрыто. Время соединения: 00:00:08, всего принято 358 байт, отправлено 5796 байт. Средняя скорость обмена данными: 769,25 байт/сек.
18.04.2009 8:17:43 На компьютер "HOST" [IP-ADDR] передано 64 байт (1 пакет(ов)): список переменных файлового сервера.
18.04.2009 8:17:43 На компьютер "HOST" [IP-ADDR] передано 2172 байт (33 пакет(ов)): список переменных подразделения.
18.04.2009 8:17:35 Установлено соединение с компьютером "HOST" [IP-ADDR]. Всего активных соединений: 1.
Передаю те же самые данные, но записями по 289 байт
TVariable = record
Name: string[32];
Value: string[255];
end
Получается, что на каждую "строку" тратится больший объем трафика, причем в большинстве случаев как минимум половина - впустую!
Но скорость в восемь раз больше!!!!
18.04.2009 8:28:43 Соединение с компьютером "HOST" [IP-ADDR] закрыто. Время соединения: 00:00:01, всего принято 184 байт, отправлено 13386 байт. Средняя скорость обмена данными: 13 570,00 байт/сек.
18.04.2009 8:28:43 На компьютер "HOST" [IP-ADDR] передано 289 байт (1 пакет(ов)): список переменных файлового сервера.
18.04.2009 8:28:43 На компьютер "HOST" [IP-ADDR] передано 9537 байт (33 пакет(ов)): список переменных подразделения.
18.04.2009 8:28:42 Установлено соединение с компьютером "HOST" [IP-ADDR]. Всего активных соединений: 1.
Получается парадокс - на передачу меньшего объема данных (но строками) времени уходит больше!
Пробовал использовать "встроенные" функции для обмена строками TTcpClient - тот же результат.
Причем если расположить и сервер и клиент на одной станции, задержки нет. Можно сделать вывод,
что проблема именно в передаче строк, а не в их обработке на клиенте или сервере.
Не могу понять, в чем проблема?
← →
Сергей М. © (2009-04-20 17:58) [1]
> записями по 289 байт
При TVariable = record размер записи никак не может быть равным 289 байт.
> в чем проблема?
Без приведенного кода навскидку могу предположить, что на стороне передатчика работает агоритм Нагеля.
← →
kotyara (2009-04-20 18:06) [2]
> При TVariable = record размер записи никак не может быть
> равным 289 байт.
На компьютер "HOST" [IP-ADDR] передано 289 байт (1 пакет(ов))
> агоритм Нагеля
Это что?
← →
Сергей М. © (2009-04-20 19:28) [3]
> На компьютер "HOST" [IP-ADDR] передано 289 байт (1 пакет(ов))
На заборе ХХХ написано, а за забором дрова лежат)
> Это что?
Ты уже погуглил, прежде чем чтокать ?
← →
имя (2009-04-20 20:24) [4]Удалено модератором
← →
Сергей М. © (2009-04-20 21:31) [5]
> Rav (20.04.09 20:24) [4]
А ты-то кто ?)
← →
FireMan_Alexey © (2009-04-20 22:16) [6]
> Сергей М. © (20.04.09 21:31) [5]
Наверное тот, кто не знал, что за забором лежит :)
← →
Palladin © (2009-04-21 12:29) [7]
> Сергей М. © (20.04.09 21:31) [5]
это он же.
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2011.07.31;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.003 c