![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
Sokoloff |
![]()
Сообщение
#41
|
Участник ![]() ![]() Группа: Участник Сообщений: 237 Регистрация: 1.4.2009 Из: Москва Пользователь №: 654 Спасибо сказали: 50 раз(а) Репутация: ![]() ![]() ![]() |
Добрый день. Протокол общения обычный http, я знаю, сколько мне передадут или должны передать (так как есть Content-Length: который я обрабатываю) и получаю длину, которую пока не обрабатываю. Но это все ерунда полная (хотя и интересная), мне важно узнать, по какой причине socket не пишет на сервер второй раз =( Спасибо. Сам я с QT только разбираюсь, поэтому кодом помочь не могу, но опыт работы с HTTP есть, может помогут следующие идеи. HTTP - это протокол без поддержки сессий, т.е. запрос/получение страницы отдельная tcp сессия. Поэтому когда tcp сессия закрылась, значит получили все данные. Темболее, что поле content-length может и не присутьствовать в http заголовке. |
|
|
dasV |
![]()
Сообщение
#42
|
Студент ![]() Группа: Участник Сообщений: 19 Регистрация: 2.2.2009 Пользователь №: 522 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Похоже, что так оно и есть, после получения данных и повторной попытки записи, не происходит закрытие socket, видимо его принудительно надо закрывать, так как это ssl соединении а работаем мы с http.
Сейчас проверил, что выдает socket.waitForReadyRead(60000) “не пугайтесь это из моего гениального творения, без слотов =)” при попытке повторного чтения, и выяснил что waitForReadyRead QAbstractSocket::UnconnectedState waitForReadyRead "Remote host closed"
самое интересное что openMode() выдает “MSG : Open Mode 3” то есть у нас все хорошо =) То есть нам надо будет делать socket.close(); после получения ответа от сервера. Буду курить носки и много думать, привет анабиоз =) |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 27.2.2025, 14:37 |