2013-03-19 3 views
0

Возможно ли прочитать неизвестную информацию из QTcpSocket?QTcpSocket Получение данных с сервера

Я имею в виду, у меня есть клиентское и серверное приложение TCP. Оба используют QDataStream для успешного обмена пакетами данных.

Если любое другое приложение (не создано мной) отправляет данные через один и тот же IP-адрес и порт на мой сервер, можно ли читать данные?

Я знаю, что, если он не написан с использованием QDataStream, его невозможно будет прочитать, но как я могу сбросить полученные данные, чтобы я мог изменить свой код, чтобы принять эту форму данных?

Итак, наконец, мой вопрос: как сервер/клиентское приложение, использующее QTcpSocket, считывает (дамп) данные из неизвестного приложения клиент/сервер?

Надеюсь, я никого не смутил.

+0

Если вы хотите обрабатывать простые данные, не используйте QDataStream, но читать() напрямую. –

+0

Как определить, какие типы данных принимаются? Есть ли возможность проверить это? – Anon

+0

Нет, как интерпретировать данные, зависит от протокола и до вас –

ответ

0

Я думаю, проблема в том, что вы читаете с помощью QDataStream, а не с помощью QTcpSocket. В этом случае используйте readRawData. Это будет игнорировать форматирование, ожидаемое QDataStream.

http://qt-project.org/doc/qt-4.8/qdatastream.html#readRawData

+0

Я пробовал. Он читает все байты, но когда я пытаюсь показать, он ничего не показывает. 'QDebug() << "Б В наличии:" << client-> bytesAvailable()' ' QDataStream в (клиент),' ' символ сырыми,' ' QDebug() << in.readRawData (& сырье, client-> размер()); ' – Anon

+1

« char raw »- это только один символ, но вы читаете байты client-> size(). Сделайте это QByteArray raw; raw.resize (client-> size()); readRawData (raw.data(), raw.size()); Чтобы печатать, лучше используйте raw.toHex(), поскольку данные могут содержать непечатаемые символы. –

Смежные вопросы