Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Qt
Войти
Регистрация
Восстановить пароль
 
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,326
1

Не приходит ответ на TCP клиент андроид с TCP сервера Qt

18.04.2016, 14:17. Просмотров 357. Ответов 8
Метки нет (Все метки)

У меня есть TCP клиент андроид и TCP сервер Qt с клиента на сервер сообщения доходят нормально. Ну а с сервера на клиент сообщения(ответы) не приходят. Не подскажете в чем может быть проблема?
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
void Server::startRead()
{
 QTcpSocket* clientSocket = (QTcpSocket*)sender();
 //Прием целого
  QDataStream in(clientSocket);
   int msgSize = -1;
   char STX = '\u0002';
   char* src;
  // int bytes = client->bytesAvailable();
   if(client->bytesAvailable())
    {
       int size = clientSocket->read(src, clientSocket->bytesAvailable());
       //in >> STX;
      qDebug() << *src;
      qDebug() << STX;
      if(*src == STX)
      {
         
       
          QTextStream out(clientSocket);
          clientSocket->flush();
          out << "Here from server-TextStream ";
   //       clientSocket->flush();
        qDebug() << "Yes";
      }
    
    }
}
Добавлено через 1 минуту
Эта фукция вызывается когда возникает сигнал readyRead
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.04.2016, 14:17
Ответы с готовыми решениями:

Qt Modbus ответ сервера по TCP
Приветствую! Есть готовая программа клиент для опроса инвертора по протоколу...

Подскажите самый простой пример TCP клиента и TCP сервера
Подскажите пример самого простого TCP клиента и TCP сервера.

Qt / tcp ip клиент сервер
Добрый день , изучаю Qt прочитал главу про работу в сете и посмотрел пару...

Связь TCP сервер-клиент
Включаю сервер на прослушку, соединение от клиента приходит - вызывается сигнал...

Не приходит ответ от QNetworkAccessManager::get
Добрый день! Подскажите. Создаю приложение в котором нужно получать файлы с...

8
icpu
475 / 356 / 91
Регистрация: 10.03.2011
Сообщений: 1,503
Записей в блоге: 4
19.04.2016, 07:05 2
yura91, если данный код yes'кает, поблема на стороне клиента.

Не по теме:

Цитата Сообщение от yura91 Посмотреть сообщение
QTcpSocket* clientSocket = (QTcpSocket*)sender();
C++ (Qt)
1
2
QTcpSocket* clientSocket = qobject_cast<QTcpSocket*>(sender());
if (!clientSocket) return;
Цитата Сообщение от yura91 Посмотреть сообщение
int size = clientSocket->read(src, clientSocket->bytesAvailable());
C++ (Qt)
1
QByteArray msg = clientSocket->readAll();

0
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,326
19.04.2016, 14:45  [ТС] 3
но клиент у меня на java написан а как там решить проблему с получением ответа?
0
Wyn
1056 / 638 / 229
Регистрация: 14.01.2016
Сообщений: 2,031
Записей в блоге: 9
19.04.2016, 15:39 4
Цитата Сообщение от yura91 Посмотреть сообщение
но клиент у меня на java написан а как там решить проблему с получением ответа?
А как ты с помощью java десериализуешь данные, которые сериализовал сервер с помощью QDataStream?
0
Dmitriy_M
1427 / 1308 / 130
Регистрация: 20.03.2009
Сообщений: 4,675
Записей в блоге: 11
19.04.2016, 17:00 5
Обычно flush делают после записи данных
C++ (Qt)
1
2
3
          QTextStream out(clientSocket);
          out << "Here from server-TextStream ";
          clientSocket->flush();
0
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,326
19.04.2016, 18:33  [ТС] 6
А out << "Here from server-TextStream " отправляет строку ввиде потока байт да или целиком как строку?
0
icpu
475 / 356 / 91
Регистрация: 10.03.2011
Сообщений: 1,503
Записей в блоге: 4
19.04.2016, 19:27 7
yura91, а в чём разница? Мне просто интересно, где граница между байтами и небайтами.
0
Wyn
1056 / 638 / 229
Регистрация: 14.01.2016
Сообщений: 2,031
Записей в блоге: 9
19.04.2016, 20:18 8
Цитата Сообщение от icpu Посмотреть сообщение
а в чём разница? Мне просто интересно, где граница между байтами и небайтами.
Он видимо имеет в виду отправляет ли тут QTextStream данную строку как строку(utf-8 видимо) или же шифрует(сериализует) его в что-то своё, нетекстовое.

Добавлено через 12 минут
Цитата Сообщение от yura91 Посмотреть сообщение
char* src;
int size = clientSocket->read(src, clientSocket->bytesAvailable());
Разве src не должен быть инициализирован?
Цитата Сообщение от yura91 Посмотреть сообщение
А out << "Here from server-TextStream " отправляет строку ввиде потока байт да или целиком как строку?
А зачем ты мешанину используешь?
Если принимаешь с помощью clientSocket->read, то и отсылай с помощью clientSocket->write.
Это второе правило любой работы с устройствами ввода-вывода.
0
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,326
19.04.2016, 22:04  [ТС] 9
Он видимо имеет в виду отправляет ли тут QTextStream данную строку как строку(utf-8 видимо) или же шифрует(сериализует) его в что-то своё, нетекстовое.
Да это я и имел ввиду так как?

Добавлено через 7 минут
кстати решил проблему clientSocket->disconnectFromHost() вызвал на стороне сервера qt и все
0
19.04.2016, 22:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.04.2016, 22:04

Tcp сервер
Где есть хорошее описание как создать tcp сервер в qt??. Мне просто нужно...

Tcp server
Создал сервер: server.h enum stated{started,stoped}; class...

Передача по TCP
Если было установлено соединение клиента с сервером TCP, шла передача данных с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru