Я пытаюсь прочитать TCP-порт с библиотеками Qt и программой GUI.Вопрос о чтении сокета Qt TCP
Проблема заключается в том, что, когда я использую этот код для чтения сокета:
QTcpSocket *a = new QTcpSocket();
a->connectToHost("127.0.0.1", 5000);
a->read(data,LEN);
это не работает, и мне нужно поставить дополнительную функцию:
a->waitForReadyRead(1)
, но эта функция замедляет свою программу , Я использую pthread
для постоянного запуска этого кода. У меня вопрос, как я могу ускорить свою программу, а также прочитать данные успешно?
Я знаю, что вы имеете в виду, и я использовал этот способ, но в потоке я думаю, что у меня нет доступа к памяти программы отдыха. – ntosis
Также возникает вопрос, могу ли я потерять свои данные, когда чтение выполняется быстрее, чем процесс, и сигнал события соединения не синхронизирован в аттре? – ntosis
@ntosis вы можете изменить свой вопрос, чтобы показать код потока. Вы можете * только * получить доступ к сокету из потока, в котором он был создан (потому что Qt будет «утверждать» в противном случае, независимо от вашего мьютексирования или других функций безопасности потокового потока), и нетривиально убедиться, что вы создаете сокет в потоке, который, по вашему мнению, соответствует правильному циклу событий и контексту для очереди в очереди. –