Большое спасибо за участие.
To kolobok0Цитата
1) вы уверены, что это проблемы софта а не физические ограничения модема?
2) то что Вы ранее сделали - это не имеет никакого отношения к TCP/IP. Если логикой не поддерживается скользящее окно..
to 1 Да. Это ограничения софта.Я сейчас убрал это ограничение - быстрее и намного - где-то на порядок. но не отслеживает ответы - это огромный минус.
to 2 Может и не относится. Но я бьюсь над тем, чтобы у меня оно работало. То, что написано - куском не выдерешь. Приходится разбираться и создавать свое. Просто этот стек - нашлепка на другую программу, которая использовала внутренний стек модема. И в ней уже написаны и обмен с модемом и обработчики, так что приходится приспосабливать и приспосабливать, тестировать и изменять. И так по кругу.
Размер сегмента я выбрал 480 байт. Количество сегментов при первоначальной посылке - 4.
Алгоритм такой - есть массив на передачу. Есть размер сегмента. Еще создаю вспомогательную переменную для смещения в массиве на передачу.
цикл, пока не передадим все.
{
беру размер массива и вычитаю из него смещение.
смотрю, не надо ли передать еще один пакет.
Сравниваю размер массива и сегмента. Если больше массив - беру у него кусок с учетом смещения, равный сегменту и формирую пакет. А если больше сегмент - то пихаю массив и тоже формирую пакет.
Передаю на сервер.
Смещение увеличиваю на число переданных байт.
Проверяю, не пришел ли ответ.
Если пришел - то на какой пакет. Если с самым маленьким номером - даю разрешение на передачу еще одного пакета. Если в серединке - просто отмечаю, что дошел.
}
Немного сумбурно, но где-то так.
Можно что-то улучшить? Как скажете?