|
|
|
threads & soccket
|
|||
|---|---|---|---|
|
#18+
добрый день может кто сталкивался с проблемой передачи данных в потоках с использование сокетов через протокол http? проблема такая - передается некое количество данных через сокет, затем как положено ждем ответа сервера, но ответа нет. такое впечатление, что сервер не получил все данные, что были указаны в Content-Length, хотя при подсчете на клиенте - все данные ушли когда не используются потоки, то после передача тех же данных, ответ от сервера приходит. какая может быть проблема с сокетами в thread'ами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2020, 09:10 |
|
||
|
threads & soccket
|
|||
|---|---|---|---|
|
#18+
vizier какая может быть проблема с сокетами в thread'ами? Никакой, т.к. и "без потоков" сокеты работают в потоке, только в основном. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2020, 09:15 |
|
||
|
threads & soccket
|
|||
|---|---|---|---|
|
#18+
имеется ввиду, использование сокета в отдельном thread Код: pascal 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2020, 09:28 |
|
||
|
threads & soccket
|
|||
|---|---|---|---|
|
#18+
vizier, это малоинформативный код. Например, может понадобиться очередь сообщений (которую в основном потоке VCL создает) или сокет создается в основном потоке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2020, 09:37 |
|
||
|
threads & soccket
|
|||
|---|---|---|---|
|
#18+
код очень большой, поэтому сюда его не запостить. сокет создается в потоке. передача и прием идут в том же потоке. ни каких очередей сообщений и vcl не используется. консольное приложение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2020, 09:50 |
|
||
|
threads & soccket
|
|||
|---|---|---|---|
|
#18+
vizier код очень большой, поэтому сюда его не запостить. Придется потрудиться создать минимальный воспроизводимый пример. Без обработчиков и т.п. Либо вырезать "секретные" участки кода из проекта и показать. А так, пару причин указал выше. Может еще кто-то погадает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2020, 11:20 |
|
||
|
threads & soccket
|
|||
|---|---|---|---|
|
#18+
vizier затем как положено ждем ответа сервера, но ответа нет Если это не поможет - понадобится и другой, по отсылке http-запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2020, 11:38 |
|
||
|
threads & soccket
|
|||
|---|---|---|---|
|
#18+
vizierкакая может быть проблема с сокетами в thread'ами? Исключительно в прокладке между креслом и монитором. Отлаживайтесь. Начните со сниффера чтобы убедиться, что данные таки уходят. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2020, 12:32 |
|
||
|
threads & soccket
|
|||
|---|---|---|---|
|
#18+
а использовать что-то готовое для http-запросов (ну например банальный TNetHttpClient) не разрешено по каким-то секретным соображениям? Обязательно изобретать свой велосипед? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2020, 13:41 |
|
||
|
threads & soccket
|
|||
|---|---|---|---|
|
#18+
К сожалению не подошел, не умеет работать с невалидым сертификатом ( Велосипед простой: кидаем 10GB и потом читаем ответ от сервера Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. и зараза, в основном потоке работает на ура, в отдельном потоке затыкается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2020, 14:04 |
|
||
|
threads & soccket
|
|||
|---|---|---|---|
|
#18+
vizier в основном потоке работает на ура, в отдельном потоке затыкается Где сокет создается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2020, 14:13 |
|
||
|
threads & soccket
|
|||
|---|---|---|---|
|
#18+
vizier Код: pascal 1. vizier Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2020, 19:06 |
|
||
|
threads & soccket
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ vizier Код: pascal 1. vizier Код: pascal 1. Загляни в модуль ScktComp ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2020, 19:56 |
|
||
|
threads & soccket
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, сокет это класс в System.Net.Socket ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2020, 10:34 |
|
||
|
threads & soccket
|
|||
|---|---|---|---|
|
#18+
wadman Где сокет создается? создается поток -> в нем создается сокет -> передача данных > уничтожение сокета -> закрытие потока ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2020, 10:36 |
|
||
|
threads & soccket
|
|||
|---|---|---|---|
|
#18+
vizier wadman Где сокет создается? создается поток -> в нем создается сокет -> передача данных > уничтожение сокета -> закрытие потока Ладно. Общей картины программисты не увидят, а гадать - это к экстрасенсам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2020, 10:49 |
|
||
|
threads & soccket
|
|||
|---|---|---|---|
|
#18+
vizier создается поток -> в нем создается сокет Хотя побуду немного им: сокет создается вместе с потоком, то есть в основном потоке, а не в доп. потоке. Сокет не блокирующий и ему нужна очередь сообщений. wadman Например, может понадобиться очередь сообщений (которую в основном потоке VCL создает) или сокет создается в основном потоке. То есть за всё это время мы ничего не выяснили, потому код - секретный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2020, 10:56 |
|
||
|
threads & soccket
|
|||
|---|---|---|---|
|
#18+
vizier, Я так понял, зависает на Receive. Значит, действительно сервер ничего не шлёт. Перед (вместе с) Receive нужна какая-нибудь WaitForData, в которой делается select. Я не знаю, как там в этом компоненте называется подобный метод. Иначе перестаешь контролировать управление потоком. Но сервер, в свою очередь, должен по таймауту дисконнектить тебя, и упасть должно и WaitForData, и Receive. Если все действительно нормально отправляется - значит таки неверный запрос, и сервер продолжает что-то ждать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2020, 10:56 |
|
||
|
threads & soccket
|
|||
|---|---|---|---|
|
#18+
wadman Хотя побуду немного им: сокет создается вместе с потоком, то есть в основном потоке, а не в доп. потоке. Сокет не блокирующий и ему нужна очередь сообщений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2020, 10:58 |
|
||
|
threads & soccket
|
|||
|---|---|---|---|
|
#18+
vizier добрый день может кто сталкивался с проблемой передачи данных в потоках с использование сокетов через протокол http? проблема такая - передается некое количество данных через сокет, затем как положено ждем ответа сервера, но ответа нет. такое впечатление, что сервер не получил все данные, что были указаны в Content-Length, хотя при подсчете на клиенте - все данные ушли когда не используются потоки, то после передача тех же данных, ответ от сервера приходит. какая может быть проблема с сокетами в thread'ами? В чем проблема сделать минимальное приложение, повторяющее "проблему" и выложить здесь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2020, 11:01 |
|
||
|
threads & soccket
|
|||
|---|---|---|---|
|
#18+
YuRock, делал ожидание, падает по таймауту. поведение такое же, когда отсылаешь данных меньше чем указано в Content-Length сервер, с другой стороны, находится в ожидании данных от клиента, поэтому и не отвечает. sleep для разгрузки потока не помогает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2020, 11:02 |
|
||
|
threads & soccket
|
|||
|---|---|---|---|
|
#18+
vizier, Wadman написал, в чем может быть проблема. 99% она в этом. Переведи сокет в блокирующий режим, например, для тестов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2020, 11:08 |
|
||
|
threads & soccket
|
|||
|---|---|---|---|
|
#18+
wadman сокет создается вместе с потоком, то есть в основном потоке, а не в доп. потоке. Сокет не блокирующий и ему нужна очередь сообщений. сокет блокирующий, создается в работающем потоке. в методе execute. небольшие данные, порядка 1к, заголовки http, уходят без проблем. затык на передаче больших данных. хотя тот же самый файл с помощью indy улетает (( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2020, 11:25 |
|
||
|
threads & soccket
|
|||
|---|---|---|---|
|
#18+
vizier сокет блокирующий, создается в работающем потоке. в методе execute. vizier затык на передаче больших данных. хотя тот же самый файл с помощью indy улетает (( Так всё-таки на передаче затык, а не на ожидании ответа сервера?! Перед send тоже надо select делать для ожидания возможности отправки. Иначе системный буффер переполнится и будет хана. Плюс контроль ошибок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2020, 11:31 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39953220&tid=2038331]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
23ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 219ms |
| total: | 343ms |

| 0 / 0 |
