1
私は、foreachループでラインにより、サーバ回線にクライアントから文字列を送信しよう:QTcpSocket経由で文字列を送信して読み込む方法は?
foreach(QString s, stringlist)
client.sendMessage(s);
しかし、クライアントは、最初の文字列を受け取ります。文字列から "\ n"を削除すると、サーバーは1つの大きな文字列にまとめられた一連の文字列を受け取ります。私は "\ 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