Название: Отправка сообщения клиенту Отправлено: gurenko от Июнь 23, 2016, 15:20 Добрый день
Использую следующую функцию для отправки сообщений клиенту Код: void MyServer::sendToClient(QTcpSocket* pSocket, const QString& str) Сообщения отправляются, но проблема в том, что клиент получает сообщения, в котором все символы идут через точку. Например, 0,CONNECTOK+IPD,0,59::...6.S.e.r.v.e.r..R.e.s.p.o.n.s.e.:..C.o.n.n.e.c.t.e.d.! Т.к. обрабатывать это сообщение нужно на микроконтроллере, то это очень нежелательный эффект. 1. Из-за чего это получается и как это устранить? 2. Почему-то длинна принятого сообщения всегда больше длины отправленного ,т.е. отправлял сообщение длинной 57(для этого примера) Название: Re: Отправка сообщения клиенту Отправлено: gil9red от Июнь 23, 2016, 15:28 Похоже, что в сообщениях символы двухбайтовые, а у клиента как однобайтовые показываете
Название: Re: Отправка сообщения клиенту Отправлено: gurenko от Июнь 23, 2016, 15:33 Да я проверял, т.е. строка имеет нормальный размер, когда засовываешь в QByteArray размер удваивается, а как с этим справиться?
Название: Re: Отправка сообщения клиенту Отправлено: gil9red от Июнь 23, 2016, 15:34 Ну, посмотрите что приходит и что уходит в HEX'е, если сомневаетесь :)
Название: Re: Отправка сообщения клиенту Отправлено: gurenko от Июнь 23, 2016, 15:36 В Вас то я не сомневаюсь, я имею ввиду как победить эту ситуацию?)
Название: Re: Отправка сообщения клиенту Отправлено: gil9red от Июнь 23, 2016, 15:43 В Вас то я не сомневаюсь, я имею ввиду как победить эту ситуацию?) Знать бы в какой кодировке отображается на клиенте? Название: Re: Отправка сообщения клиенту Отправлено: gurenko от Июнь 23, 2016, 16:31 Тут сложно сказать, я же посылаю на вай фпй модуль, он передает на МК, а я потом по компорту смотрю, что получил МК.
Когда отправлял строку с вот этой проги hercules_3-2-8, предварительно создав на ней сервер, все было норм, поэтому мне кажется, что проблема может быть в qt Название: Re: Отправка сообщения клиенту Отправлено: Hellraiser от Июнь 23, 2016, 16:40 Да я проверял, т.е. строка имеет нормальный размер, когда засовываешь в QByteArray размер удваивается, а как с этим справиться? str.toLatin1() или str.toLocal8Bit()Название: Re: Отправка сообщения клиенту Отправлено: Tamori Nao от Июнь 23, 2016, 16:42 Переведи QString к пимеру toLocal8Bit и отправь на сокет. Если Qt 4.8 к примеру то попробуй перевести toAskii(). Посмотри что получилось. Так же перед отправкой в дебаге посмотри что отправляешь в хекс виде arrBlock.toHex()
Название: Re: Отправка сообщения клиенту Отправлено: gurenko от Июнь 24, 2016, 10:29 str.toLocal8Bit() помогло. Спасибо всем большое!
Название: Re: Отправка сообщения клиенту Отправлено: gurenko от Июль 01, 2016, 14:47 Отправкой вроде разобрался, но с получением опять какая-то жопа.
Что я делаю, пытаюсь соединить сервер на qt и клиент на микроконтроллере. Когда запускаю сервер на hercules_3-2-8, то все работает нормально. Теперь нужно запустить сервер на qt. Для чистоты эксперимента, беру клиент на hercules_3-2-8 и коннекчусь к серверу на qt, кот взял из книги Макс Шлее. Коннект проход и сервер мне присылает даже сообщение. А вот с приемом вообще никак. причем если взять клиента qt, то все работает, поэтому мне кажется что дело опять таки в кодировках. Может кто чего подскажет , задача то простая, соединить сервер qt и hercules_3-2-8 Название: Re: Отправка сообщения клиенту Отправлено: gurenko от Июль 01, 2016, 16:24 В топку все - перешел на QTextStream и все заработало)
|