0

これはかなり初歩的な質問です。ソケットプログラミングを始めたばかりで、qt/c++ を使用しています。演習として、ソケット (ポート 80 での localhost ループバック) に接続し、そこにデータを書き込み、応答を待ち、端末に応答を出力する簡単なプログラムを作成しました。

プログラムの主なメソッドは次のとおりです。

void TcpSocket::ConnectSocket()
{
    socket = new QTcpSocket(this);
    socket->connectToHost("localhost", 80);

    if(socket->waitForConnected(3000)){
        qDebug() << "Connected";

        socket->write("Hello Server");
        socket->waitForBytesWritten(1000);
        socket->waitForReadyRead(3000);
        qDebug() << "Reading: " << socket->bytesAvailable();
        qDebug() << socket->readAll();
        socket->close();
    }
    else {
        qDebug() << "Could not connect";
    }
}

上記のコードの応答は次のとおりです。

Connected 
Reading:  0 
"" 

現在、ローカル マシンで Web ページを提供するポート 80 で localhost 用に設定された仮想ホストを実際に持っています。そのプログラムを実行すると、エンドポイント localhost:80 でまったく何も起こらないように見えます。

ポート 80 がリッスンしている場合、"Hello Server" はどこに書き込まれますか? で、なんで反応しないの?

4

1 に答える 1

0

リクエストの送信が完了していないため、Web サーバーはあなたが書いたものに応答しませんでした。少なくとも、書き込みに「\n\r\n」を追加する必要があります。

https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol

于 2013-05-29T23:52:39.697 に答える