1

Shoutcast ストリームをリッスンするように QTcpServer をセットアップしました。newConnection() シグナルは、次のように発生します。

connect(tcpServer, SIGNAL(newConnection()), this, SLOT(handleClientComm()));

void IcecastServer::handleClientComm(){
    QTcpSocket *clientConnection = tcpServer->nextPendingConnection();
    qDebug() << clientConnection->write("HTTP/1.0 200 OK\r\n\r\n" ) << endl;
    clientConnection->flush();
}

HTTP 200 を送信するにはどうすればよいですか?

4

1 に答える 1

1

newConnection() シグナルが発行されたときに nextPendingConnection() 呼び出しを使用して QTcpServer から QTcpSocket オブジェクトを抽出する必要があります。そして、抽出された QTcpSocket オブジェクトで writeData() を呼び出す必要があります。

ここで重要なのは、リスニング ソケット (QTcpServer) は、新しいクライアントが接続するたびに接続ソケット (または QTcpSocket) の作成のみを担当するということです。QTcpSocket は、特定のクライアントとの実際の通信を担当します。

何がうまくいかないのか、何を試したのか、より具体的に説明できるかもしれません。何かが期待どおりに動作しないように思われる場合は、wireshark PCAP を提供していただければ幸いです。

于 2011-04-15T00:28:36.857 に答える