Size: a a a

2020 May 01

AS

Alexey Shumkin in Delphi & Lazarus
Serjone
Что делать, если связь с сервером не стабильная? вебсокет работает через идхттп. При загрузке файлов обрывается часто. Сделал таймаут 12 секунд. Есть ещё какие-то способы улучшить связь? Если ещё увеличить таймаут, обрывы уменьшатся?
Как обрывы связи связаны с таймаутами?
Почему связь рвётся?
источник

AS

Alexey Shumkin in Delphi & Lazarus
Илья
Кстати, про сниффер. Возниклла необходимость посмотреть чем обмениваются  веб сервисы. Кто чем смотрит такие запросы-ответы?
Если не HTTPS  с certificate pinning,и умеют через прокси, то fiddler
источник

AS

Alexey Shumkin in Delphi & Lazarus
Илья
Кстати, про сниффер. Возниклла необходимость посмотреть чем обмениваются  веб сервисы. Кто чем смотрит такие запросы-ответы?
Или tcpdump/wireshark, если вдруг просто HTTP :)
источник

SB

Sergey Bodrov in Delphi & Lazarus
Драйвера хуавея для беспроводных устройств отключают контроль целостности TCP, разрешая битые данные. Для страничек и картиночек в HTTP это не критично, а для шифрованых и поточных данных это беда.
источник

AS

Alexey Shumkin in Delphi & Lazarus
Dmitry Belkevich
как вариант: сниффер сети и смотреть побайтно что там вообще происходит. возможно будут какие-то идеи что не так
+
Смотреть на уровне сети причины обрывов, если это не обрыв по таймауту.
Если обрыв по таймауту, то это кривой компонент, который отправку большого файла считает простоем, и потому рвёт.. у меня один раз так было с SMTP от OverbyteICS
источник

SB

Sergey Bodrov in Delphi & Lazarus
Ещё перехватом и модификацией пакетов занимается Касперский.
источник

DB

Dmitry Belkevich in Delphi & Lazarus
да, к слову, антивирусы та еще кака. у нас касперский как-то умудрялся пакеты не просто не пропускать, а вырезать куски )
источник

DB

Dmitry Belkevich in Delphi & Lazarus
такой подлянки мы никак не ожидали
источник

SB

Sergey Bodrov in Delphi & Lazarus
Если Каспера нет в установленных программах, это не значит, что его нет в системе =)
источник

AS

Alexey Shumkin in Delphi & Lazarus
Sergey Bodrov
Драйвера хуавея для беспроводных устройств отключают контроль целостности TCP, разрешая битые данные. Для страничек и картиночек в HTTP это не критично, а для шифрованых и поточных данных это беда.
Про похожее недавно, кстати, читал на Хабре :)
https://habr.com/ru/company/oleg-bunin/blog/497334/
источник

S

Serjone in Delphi & Lazarus
Илья
Кстати, про сниффер. Возниклла необходимость посмотреть чем обмениваются  веб сервисы. Кто чем смотрит такие запросы-ответы?
Вирешарк, впепро
источник

S

Serjone in Delphi & Lazarus
Dmitry Belkevich
как вариант: сниффер сети и смотреть побайтно что там вообще происходит. возможно будут какие-то идеи что не так
А зачем? Я вижу кучу повторных запросов, кроме моего клиента и сервера, в сети флуда нет. Но там рядом работает ЧПУ оборудование. Боюсь, как бы не было от него помех. Уж очень странно скорость скачет. То пяток пакетов за секунду, то неспокоен секунд уходит один пакет
источник

S

Serjone in Delphi & Lazarus
Alexey Shumkin
Как обрывы связи связаны с таймаутами?
Почему связь рвётся?
Рвется по таймауту. Чем больше ставлю, тем меньше обрывов
источник

S

Serjone in Delphi & Lazarus
Сейчас 20 секунд поставил, грузится, ни единого разрыва за 70 мегабайт...
источник

S

Serjone in Delphi & Lazarus
Alexey Shumkin
+
Смотреть на уровне сети причины обрывов, если это не обрыв по таймауту.
Если обрыв по таймауту, то это кривой компонент, который отправку большого файла считает простоем, и потому рвёт.. у меня один раз так было с SMTP от OverbyteICS
Вряд-ли в компоненте дело. Там протокол поверх вебсокета. В итоге компонент шлёт только куски. Сейчас уменьшил размер кусков до #FFF байт, обрывов пока нет. Но скорость ужасная. Прикручиваю скоростёметр, сделать график, может станет понятно от чего скачет так
источник

S

Serjone in Delphi & Lazarus
var
 UplTime   :int64;
 BeforeUpl : TDateTime;
 UplSpeed : Real;      
BeforeUpl:=Now;
...чототам делаем...
UplTime := ((MilliSecondsBetween(BeforeUpl, now)));
UplSpeed :=  i/ UplTime*0.9765625;   // i здесь равно количеству отправленных байт.  0.9765625 =1000/1024 - коэффициент для получения килобайт в секунду

я ж правильный велосипед запилил для измерения скорости? Берём время до действия, вычитаем из него время после действия, смотрим сколько миллисекунд прошло. Так как действием была отправка байт, то делим байты на время и умножаем на тыщу и делим на 1024
источник

SB

Sergey Bodrov in Delphi & Lazarus
1024 это для битов, а не для байтов
источник

SB

Sergey Bodrov in Delphi & Lazarus
Килобайт = 1000
источник

AS

Alexey Shumkin in Delphi & Lazarus
Sergey Bodrov
1024 это для битов, а не для байтов
Чо? :) Сколько битов в байте? 😂
источник

SB

Sergey Bodrov in Delphi & Lazarus
Кило = 1000, не повторяйте глупости
источник