Я пытаюсь отправить строки от клиента к серверу построчно в цикле Еогеаспа:Как отправлять и читать строки строки через QTcpSocket?
foreach(QString s, stringlist)
client.sendMessage(s);
Но клиент получает только первую строку. Когда я удаляю «\ n» из строки, сервер получает связку строк, объединенных в одну большую строку. Я думал, что добавление «\ n» разделит данные на строки, которые я могу читать с помощью readLine()
. Что я пропустил?
Мой клиент
class cClient:public QTcpSocket
{
public:
void sendMessage(QString text)
{
text = text + "\n";
write(text.toUtf8());
}
};
и сервер:
class pServer:public QTcpServer
{
Q_OBJECT
public:
pServer()
{
connect(this,SIGNAL(newConnection()),SLOT(slotNewConnection()));
}
public slots:
void slotNewConnection()
{
QTcpSocket* c = nextPendingConnection();
connect(c,SIGNAL(readyRead()),this, SLOT(readData()));
}
void readData()
{
QTcpSocket* conn = qobject_cast<QTcpSocket*>(sender());
QString data = QString(conn->readLine());
}
};
Спасибо! Это именно то, чего я пропустил. Теперь все работает! – lena