Frage

Ich arbeite einen HTTP-Server für meine Klasse zu machen. Aber wird die zurückgegebene Datei nicht von Firefox angezeigt wird. Ich konstruiere in dem rechten content-length der Datei, die ich senden will, dann schicke ich die Antwort-Header mit einem Aufruf eine Antwort-Header und setzte auf send(). Als nächstes benutze ich send() die Datei erneut zu senden, warum Firefox die Datei nicht angezeigt wird? Ich werde den entsprechenden Code unten schreiben.

Wie Sie mit dem Code sehen werden, ich habe Probleme eine error_response senden, während ein 404-Fehler. Live-HTTP-Header mit Hilfe Ich kann sehen, dass Firefox den richtigen Antwort-Header empfängt, und die cout << error_response << endl; die richtige Antwort kann nicht gedruckt werden. Warum Firefox nicht angezeigt werden? Muss ich nur einen Anruf den Header und das Antwortpaket send() enthalten?

// send response headers
    response->Print( buffer, 2000 );
    if ( send( acc_tcp_sock, buffer, sizeof(buffer), 0 ) < 0 ) {
      cerr << "Unable to send response headers to client." << endl;
      return 5;
    }

    // if 200 and GET then send file
    if ( response->Get_code() == 200 && method == "GET" ) {
      // send file
    }

    // close file, if it has been opened
    if ( response->Get_code() == 200 ) {
      fclose( returned_file );
    }
    else if ( method == "GET" ) {
      if ( send( acc_tcp_sock, error_response.c_str(), error_response.length(), 0 ) < 0 ) {
        cerr << "Unable to send data to client." << endl;
        return 6;
      }
      cout << error_response << endl;
    }

    close( acc_tcp_sock ); // close the connection
  }

  return 0;
}
War es hilfreich?

Lösung

Haben Sie versucht, die Antwort-Header zu senden und die Datei im selben Sendebefehl? Gibt es eine Möglichkeit Sie können sagen, was firefox empfängt. Sie könnten Schreiben versuchen, einig HTTPRequester-Klasse, eine Konsolenanwendung, die eine HTTP-Anfrage an den Server sendet und sehen, was seine im Gegenzug zu bekommen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top