Название: С конструктором помогите Отправлено: CJ1 от Июнь 16, 2012, 09:03 Вобщем в объекте главного окна добавляю
Код: private: В функции нужно как бы инициализировать out2 но не получается! Код: void EditTable::on_action_2_triggered() out2 = QDataStream(&block2,QIODevice::WriteOnly); Дает ошибку, но это не правильно я знаю, но как подругому сделать? Название: Re: С конструктором помогите Отправлено: mutineer от Июнь 16, 2012, 09:56 void QDataStream::setDevice ( QIODevice * d )
или создавать QDataStream динамически Название: Re: С конструктором помогите Отправлено: CJ1 от Июнь 16, 2012, 09:59 Я так и сделал QDataStream * out2
Теперь добавляю данные вот так *out2 << "asd"; Правильно? Название: Re: С конструктором помогите Отправлено: mutineer от Июнь 16, 2012, 10:03 Я так и сделал QDataStream * out2 Теперь добавляю данные вот так *out2 << "asd"; Правильно? Если работает, то ответ очевиден, если не работает - рассказывай как не работает Название: Re: С конструктором помогите Отправлено: CJ1 от Июнь 16, 2012, 10:20 Вобщем, люди, давайте я постараюсь объяснить все заного, я уже двое суток с этим борюсь!
Смотрите, я беру данные с excel, думаю тут код не нужно писать, так как все проходит ровно! Во время заполнения я сразу эти данные кидаю в QTableWidget Далее срабатывает вот это событие Код: void EditTable::on_tableWidget_cellChanged(int row, int column) Оно записывает в эти out ы данные. Когда запишутся вызывается вот это Код: void EditTable::on_action_2_triggered() И вот тут начинаются косяки. Постараюсь объяснить на пальцах какие. Вот выполнилось все что я сказал выше. На сервак ничего не попало! Ладно.... Начинаю в своей проге, обращатся к серваку, разными способами, но мои обращения, он не видит, а за место них видит то что я послал тут _sock->write(block2); (чууть выше код) Ну вобщем вот так! Как еще это объяснить я не знаю. На Win API я никогда не встречал подобного! Как это решается.... Название: Re: С конструктором помогите Отправлено: CJ1 от Июнь 16, 2012, 10:22 Чуть не забыл! ОШИБКИ НЕ ВОЗВРАЩАЕТ!!!!
Название: Re: С конструктором помогите Отправлено: mutineer от Июнь 16, 2012, 10:24 _sock->flush() попробуй делать после записи в сокет
Название: Re: С конструктором помогите Отправлено: CJ1 от Июнь 16, 2012, 10:24 Ставлю гребанные QMessageBox между кодом и все отлично работает!
Название: Re: С конструктором помогите Отправлено: CJ1 от Июнь 16, 2012, 10:27 _sock->flush() попробуй делать после записи в сокет _sock->flush() попробуй делать после записи в сокет А где именно, в цикле?ч Название: Re: С конструктором помогите Отправлено: CJ1 от Июнь 16, 2012, 10:37 Куда только не ставил не действует!
Название: Re: С конструктором помогите Отправлено: CJ1 от Июнь 16, 2012, 10:41 Вот хоть убей его, а QmessageBox ставишь, и постоянно ОК жмешь и все как по маслу идет!
Код: void EditTable::on_tableWidget_cellChanged(int row, int column) Название: Re: С конструктором помогите Отправлено: CJ1 от Июнь 16, 2012, 10:42 Я не пойму, ну почему соккет работает ассинхронно! Мне это не надо! Работал бы синхронно и не возвращал бы управления пока все не отправит!
Название: Re: С конструктором помогите Отправлено: alexis031182 от Июнь 16, 2012, 10:54 QAbstractSocket::waitForBytesWritten()
Название: Re: С конструктором помогите Отправлено: CJ1 от Июнь 16, 2012, 10:57 Сделал так,
Код: int size = _sock->write(block); Теперь не все отсылаются, хотя и отсылаются Название: Re: С конструктором помогите Отправлено: alexis031182 от Июнь 16, 2012, 11:07 Уберите "-1"
Название: Re: С конструктором помогите Отправлено: CJ1 от Июнь 16, 2012, 11:10 Намертво виснит!
Название: Re: С конструктором помогите Отправлено: CJ1 от Июнь 16, 2012, 11:11 Думаю, придется после каждого запроса присылать ответ от сервера
Название: Re: С конструктором помогите Отправлено: alexis031182 от Июнь 16, 2012, 11:17 Намертво виснит! flush() по идее не нужен, если сокет используется в блокирующем режимеНазвание: Re: С конструктором помогите Отправлено: CJ1 от Июнь 16, 2012, 11:39 Убрал, и разници никакой... Понять бы в чем причина!
Название: Re: С конструктором помогите Отправлено: CJ1 от Июнь 16, 2012, 11:41 Сделал, чтоб после того как на сервер приходит сообщения, и он сделал все что нужно, от него приходил ответ,
Но ответ приходит только в том случае, если я например, сверну окно, или нажму на кнопку..... Название: Re: С конструктором помогите Отправлено: CJ1 от Июнь 16, 2012, 11:43 Может у кого было подобное, а?
Вот что дает сворачивания окна скажем? А что дает вызов MessageBox а? Название: Re: С конструктором помогите Отправлено: CJ1 от Июнь 16, 2012, 12:10 Ни как не выходит
Название: Re: С конструктором помогите Отправлено: Alex_C от Июнь 18, 2012, 09:51 А что дает вызов MessageBox а? Наверное в данном случае добавление MessageBox создает эффект QCoreApplication::processEvents ();Название: Re: С конструктором помогите Отправлено: Bepec от Июнь 18, 2012, 20:39 Таки оно и есть. Оно принудительно его вызывает :)
Название: Re: С конструктором помогите Отправлено: CJ1 от Июнь 19, 2012, 07:08 Да, я уже решил вопрос, вся проблема просто была в том, что я тупо, на серваке, хватал первую порцию данных, и работал с ней, Теперь я просто первыми двумя байтами qint16 пересылаю размер будущих данных а на серваке делаю цикл в потоке который обрабатывает входящее соединения, делаю QCoreApplication::processEvents () пока не придут все данные
|