Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.09.05;
Скачать: CL | DM;

Вниз

особенности tcp/ip при PPP соединении   Найти похожие ветки 

 
Поросенок Винни-Пух ©   (2008-11-07 13:52) [0]

столкнулся с неожиданной проблемой.
есть клиент и сервер, взаимодействующие по http.
(indy 9018)
на сервере tidtcpserver на клиенте tidhttp (или если нет прокси то tidtcpclient).
Обмен идет post запросами и все как бы хорошо.
Кроме двух случаев в одном городе.
У клиентов диалап к провайдеру через обычный модем.
Линия аналоговая, набор пульсом.
Обмен данными идет неустойчиво.
Детальная трассировка показала:
клиент послав пост запрос серверу вошел в цикл readln для чтения заголовка ответа.
считал две первые строки заголовка и замер в ожидании третьей в которой указан content-length.
Эту строку у него получается считать через раз на третий.

Сервер тоже был оттрассирован.
И на нем все выглядит замечательно.
Сначала цикл readln и получение заголовка клиента, затем считывание блока данных пост запроса, затем обработка запроса (декрипто/проверка эцп/запросы к субд/формирование ответа/эцп/шифрование и посылка самого ответа клиенту)
На все про все уходит одна-две секунды.
Тем не менее клиент не выходит из readln.

Глюк стабильный, но проявляется только в одном городе и только на диалапе.

Подскажите плиз, куда рыть и где закапывать собаку.


 
tesseract ©   (2008-11-07 14:45) [1]

Обновить систему ? Настройить брандмауэр ?


 
clickmaker ©   (2008-11-07 14:46) [2]

> Тем не менее клиент не выходит из readln

тут только одно приходит в голову: readln не может найти конец строки


 
Поросенок Винни-Пух ©   (2008-11-07 14:48) [3]

это понятно что клиент не может найти CRLF.
непонятно почему crlf пропадает только на диалапе и только в одном населенном пункте.

брандмауэра там незамечено. тем более такого интеллектуального, который две строки шттп заголовка пропускает, а третью нет.


 
clickmaker ©   (2008-11-07 15:04) [4]

а от значения content-length не было замечено зависимости?


 
Поросенок Винни-Пух ©   (2008-11-07 15:19) [5]

проверялось на одной и той же операции, а там в результате запроса примерно одинаковый контент генерится.
прикол вот еще в чем.
на той же машине стоит другой клиент работающий с другим сервером (моя же разработка, но в прошлом и у другого работодателя).
там тоже тсп/ип но протокол собственный, двоичный.
все отличие только в том, что заголовок представляет собой блок фиксированной длины, который считывается через readbuff.
а дальше, если есть дополнительный блок данных, то его длина извлекается из заголовка и делается еще один readbuff.
так вот. этот "старый" клиент работает как швейцарский ролекс. В тех же условиях на том же модеме с тем же провайдером.

все отличие в том, что там нет readln.


 
Поросенок Винни-Пух ©   (2008-11-07 15:33) [6]

в общем пока добился улучшения таким путем:
сервер, сформировав ответ, не делает writeln writeln writeln writebuff,
а формирует в памяти весь блок ответа целиком (заголовок + данные) после чего делает единственный writebuff клиенту.

но все равно хотелось бы понять "химию и физику" проблемы.


 
Сергей М. ©   (2008-11-07 16:27) [7]


> Поросенок Винни-Пух ©   (07.11.08 15:33) [6]


Попробуй выключить на своем IdTCPServer"е алгоритм Нагеля


 
Anatoly Podgoretsky ©   (2008-11-07 16:50) [8]

> Поросенок Винни-Пух  (07.11.2008 14:48:03)  [3]

В этом одном населенном пункте надо озаботиться об смене модема, на другую фирму.


 
Anatoly Podgoretsky ©   (2008-11-07 16:51) [9]

> Сергей М.  (07.11.2008 16:27:07)  [7]

То же дело.


 
Поросенок Винни-Пух ©   (2008-11-07 17:08) [10]

Нагель - это из этой оперы?

procedure TIdTCPConnection.WriteBuffer(const ABuffer; AByteCount: Integer;
 const AWriteNow: boolean = false);


 
Сергей М. ©   (2008-11-07 19:27) [11]


> Поросенок Винни-Пух ©   (07.11.08 17:08) [10]


Не-а ..

Нагель - это Get/SetSockOpt(..TCP_NODELAY..)



Страницы: 1 вся ветка

Текущий архив: 2010.09.05;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.01 c
2-1275975584
программер
2010-06-08 09:39
2010.09.05
500 пикселей размесить в формате 4:3


6-1225621658
sloosar
2008-11-02 13:27
2010.09.05
Автоматизация


15-1275375624
12
2010-06-01 11:00
2010.09.05
Хочу странного - вертикальный dbgrid. Есть такой?


15-1276254260
novichek
2010-06-11 15:04
2010.09.05
SQL Microsoft.Jet.OLEDB.4.0? Access


2-1276080161
Анна
2010-06-09 14:42
2010.09.05
DataSet и передача параметров (MySQL5.1)