string .length() gibt nichts zurück!

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • string .length() gibt nichts zurück!

    Also erstmal ein frohes neues Jahr, zusammen.
    Für mich ist es nicht ganz so froh, wir haben versehentlich
    eine Rakete in ein Fenster gefeuert, zum Glück war es zu!
    (Naje, die Haftpflicht-Versicherung macht das schon...)

    Also, ich habe hier ein kleines Programm,
    das einen Request an meinen Server schickt.

    Quellcode

    1. #include <windows.h>
    2. #include <winsock2.h>
    3. #include <string>
    4. #include <stdio.h>
    5. #include <iostream>
    6. using namespace std;
    7. int startWinsock (void);
    8. int main (unsigned short argc, char* argv[]) {
    9. long rc = startWinsock();
    10. if (rc != 0) {
    11. printf ("Winsock konnte nicht gestartet werden -> %d\n", rc);
    12. } else {
    13. printf ("Winsock gestartet!\n");
    14. // --- Socket erstellen.
    15. int s = socket(AF_INET, SOCK_STREAM, 0);
    16. if (s == INVALID_SOCKET) {
    17. printf ("Fehler: Socket konnte nicht erstellt werden -> %d\n", WSAGetLastError());
    18. } else {
    19. printf ("Socket erstellt!\n");
    20. // --- Socket an einen Host verbinden.
    21. sockaddr_in addr;
    22. addr.sin_family = AF_INET;
    23. addr.sin_port = htons(80);
    24. addr.sin_addr.s_addr = inet_addr("XX.XX.XX.XX");
    25. rc = connect(s, (SOCKADDR*)&addr, sizeof(SOCKADDR));
    26. if (rc == -1) {
    27. printf ("Konnte nicht zum Server verbinden.!\n");
    28. } else {
    29. printf ("Verbunden!\n");
    30. // --- Request an Host.
    31. string pst = "test=hallo";
    32. string req = "";
    33. req += "POST /tell.php HTTP/1.0\r\n";
    34. req += "Host: meinserver.de\r\n";
    35. req += "Content-Type: application/x-www-form-urlencoded\r\n";
    36. req += "Content-Length: ";
    37. req += pst.length();
    38. req += "\r\n\r\n";
    39. req += pst;
    40. if (!send(s, req.c_str(), req.length(), 0)) {
    41. printf ("Request konnte nicht gesendet werden!\n");
    42. } else {
    43. cout << endl << "--- --- REQ --- ---" << endl << req << endl << "--- --- --- --- ---" << endl << endl;
    44. }
    45. }
    46. }
    47. }
    48. system ("PAUSE");
    49. return 0;
    50. }
    51. int startWinsock (void) {
    52. WSADATA wsa;
    53. return WSAStartup(MAKEWORD(2,0),&wsa);
    54. }
    Alles anzeigen


    Und wie der Title schon sagt, scheint .length() nichts zurückzugeben,
    da die Ausgabe wie folgt aussieht:

    Winsock gestartet!
    Socket erstellt!
    Verbunden!

    --- --- REQ --- ---
    POST /tell.php HTTP/1.0
    Host: meinserver.de
    Content-Type: application/x-www-form-urlencoded
    Content-Length:

    test=hallo
    --- --- --- --- ---

    Drücken Sie eine beliebige Taste...


    Hinter Content-Length: sollte die Länge des strings pst stehen,
    tut es aber nicht. Somit versteht mein Server auch den Request
    nicht! Meine Standardfrage: Was mach' ich falsch?