Russian Qt Forum

Qt => Работа с сетью => Тема начата: ice2heart от Апрель 15, 2011, 09:27



Название: Qtcpsocket и простое приложение
Отправлено: ice2heart от Апрель 15, 2011, 09:27
Есть такая проблема, не могу понять в принципе как реализовать сетевое соединение запрос-> ответ.
Тоесть те примеры которые я нашел, начинали отдавать данные сразу при подключении.
Подскажите, или дайте пример пожалуйсто


Название: Re: Qtcpsocket и простое приложение
Отправлено: RedDog от Апрель 15, 2011, 09:54
Код, в примерах, который выполняется при подключении, повесь на кнопку и будет счастье.


Название: Re: Qtcpsocket и простое приложение
Отправлено: ice2heart от Апрель 15, 2011, 09:59
да не в этом дело, я непонял как считать и как записать что то в соккет.


Название: Re: Qtcpsocket и простое приложение
Отправлено: SABROG от Апрель 15, 2011, 10:02
Надо реализовывать свой протокол. Например разбить траффик на управляющие команды. Простейший вариант:

Код
C++ (Qt)
enum OpCode {
   E_GETFILE,
   E_SENDFILE
}
 

Формат пакета может быть таким:

Код:
struct SendFile {
    qint64 szPacket;
    OpCode opcode = E_SENDIFLE;
    qint64 szFile;
    quint32 fileCRC;
    const char data[szFile];
}

Если сервер получает что-то от клиента, то мы уже заранее знаем размеры "кусков", т.к. размер приходит первыми байтами и если приходит больше данных чем указано в "заголовке" пакета, то это начало нового. Если меньше, то значит надо дожидаться пока прийдет следующая порция данных. Главное, чтобы клиент и сервер знали точный и фиксированный размер поля szPacket.


Название: Re: Qtcpsocket и простое приложение
Отправлено: ice2heart от Апрель 15, 2011, 10:04
хм.  както сложно сильно.
можно пример с примерной реализаций? или что гуглить


Название: Re: Qtcpsocket и простое приложение
Отправлено: ice2heart от Апрель 15, 2011, 10:06
или может в qt уже есть готовый протокол?


Название: Re: Qtcpsocket и простое приложение
Отправлено: ice2heart от Апрель 15, 2011, 13:14
http://thesmithfam.org/blog/2009/07/09/example-qt-chat-program/comment-page-1 вот что нашел, может кому тоже поможет, очень хорошо документированно