crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в маркеры в передаваемых через сокет сообщениях
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
antoshib Дата 1.7.2010, 14:21
  почитал, поправил, спасибо)
kuzulis Дата 30.6.2010, 16:03
 
Цитата
QDataStream out(&block, QIODevice::WriteOnly);
out.setVersion(QDataStream::Qt_4_0);


antoshib,

а ну быстро читать про QDataStream - что это и с чем это едят!!!
Я не зря спросил про это! :)
antoshib Дата 30.6.2010, 14:18
 
Цитата(kuzulis @ 30.6.2010, 10:56) *
Не может быть! Код в студию!

Какие методы классов QTcpServer и QTcpSocket используете для чтения/записи? Используете ли DataStream ?


У меня пока все по-простому - синхронно и без использования потоков.
Если увидите косяки - сообщите пожалуйста)


CODE

bool socketWrite( QTcpSocket *S, QString str, int Timeout ){
/////////////////////////////////////////////////////////////////////

QByteArray block;
qint64 d_size;
QDataStream out(&block, QIODevice::WriteOnly);
out.setVersion(QDataStream::Qt_4_0);

out << str.toAscii().constData();

d_size = S->write( block );

return S->waitForBytesWritten( Timeout );

};



bool socketRead( QTcpSocket *S, QString *str, int Timeout ){
/////////////////////////////////////////////////////////////////////

if (!S->waitForReadyRead(Timeout))
return false;


quint16 blockSize;
QDataStream in(S);
in.setVersion(QDataStream::Qt_4_0);


blockSize = S->bytesAvailable();


char *rb = new char( blockSize );
uint br = (uint) blockSize;

in.readBytes( rb, br );


*str = rb;
delete[] rb;

return true;
};


kuzulis Дата 30.6.2010, 9:56
  Не может быть! Код в студию!

Какие методы классов QTcpServer и QTcpSocket используете для чтения/записи? Используете ли DataStream ?
antoshib Дата 30.6.2010, 9:39
  Использую QTcpServer и QTcpSocket для обмена сообщениями.
Как я обнаружил с помощью анализатора трафика, в передаваемых
сообщениях вставляются маркеры и пакеты выглядят следующим образом:

запрос:
G...<сообщение запроса>.

ответ:
a...<сообщение ответа>.

При этом все работает хорошо, если и клиент, и сервер написаны на QT (при передаче сообщений маркеры не мешаются).
Но сторонний клиент (написан на дэлфи) начинает спотыкаться об эти маркеры - не знаю как с этим быть?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 13:09