2016-06-13 5 views
0

C++/Qtでtcpソケットサーバーを実装しようとしました。 最初は、clientConnectionローカル宣言が機能します。QTcpServerクライアントソケットからデータを読み取る方法

QTcpSocket * clientConnection = tcpServer-> nextPendingConnection();私はReadReady()で読み込ん> QTcpSocket-を使用するためには、ヘッダファイルでプライベートQTcpSocketクラスでソケットを宣言するのではなくローカルクラスとして宣言しようとしたとき

しかし、私はエラーを得ました。これらの問題はどうやって起こりますか?

void Server::respondNewConnection() 
{ 
    clientConnection = tcpServer->nextPendingConnection(); 
    connect(clientConnection, &QAbstractSocket::disconnected, 
     clientConnection, &QObject::deleteLater); 
    connect(clientConnection, SIGNAL(readyRead()), this, SLOT(ReadyRead())); 

    clientConnection->write("[server]Welcome to server...", 100); 
    qDebug() << "02[server]Welcome to server..."<<endl; 
    statusLabel->setText(tr("test!")); 


} 

void Server::ReadyRead(){ 

qDebug() << "04[server]Ready to Read..." << endl; 

/* 
char buffer[100]; 
const int buffer_size = 100; 
tcpSocket->read(buffer, buffer_size); 
qDebug() << "05[server]Message from client: " << buffer << endl; 
*/ 
} 
+1

「私はエラーを得た」 - どのようなエラーが。? –

+0

@FrankOsterfeld非常によく知られていない 'enter image description here'リンクに表示されています:o –

答えて

0

あなたはないtcpSocketオブジェクトから、あなたのServer::ReadyRead機能でclientConnectionオブジェクトからデータを読み込む必要があります。

QByteArray totol_data, data_buffer; 
while(1) { 
    data_buffer = clientConnection->read(1024); 
    if(data_buffer.isEmpty()) { 
     break; 
    } 
    totol_data.append(data_buffer); 
} 
QString message_content(totol_data); 
1

私はあなたが前方宣言を追加する必要があるかもしれないと思う:あなたのエラーがであり、ファイルの先頭に

class QTcpSocket; 

関連する問題