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.
Alles anzeigen
Und wie der Title schon sagt, scheint .length() nichts zurückzugeben,
da die Ausgabe wie folgt aussieht:
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?
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
- #include <windows.h>
- #include <winsock2.h>
- #include <string>
- #include <stdio.h>
- #include <iostream>
- using namespace std;
- int startWinsock (void);
- int main (unsigned short argc, char* argv[]) {
- long rc = startWinsock();
- if (rc != 0) {
- printf ("Winsock konnte nicht gestartet werden -> %d\n", rc);
- } else {
- printf ("Winsock gestartet!\n");
- // --- Socket erstellen.
- int s = socket(AF_INET, SOCK_STREAM, 0);
- if (s == INVALID_SOCKET) {
- printf ("Fehler: Socket konnte nicht erstellt werden -> %d\n", WSAGetLastError());
- } else {
- printf ("Socket erstellt!\n");
- // --- Socket an einen Host verbinden.
- sockaddr_in addr;
- addr.sin_family = AF_INET;
- addr.sin_port = htons(80);
- addr.sin_addr.s_addr = inet_addr("XX.XX.XX.XX");
- rc = connect(s, (SOCKADDR*)&addr, sizeof(SOCKADDR));
- if (rc == -1) {
- printf ("Konnte nicht zum Server verbinden.!\n");
- } else {
- printf ("Verbunden!\n");
- // --- Request an Host.
- string pst = "test=hallo";
- string req = "";
- req += "POST /tell.php HTTP/1.0\r\n";
- req += "Host: meinserver.de\r\n";
- req += "Content-Type: application/x-www-form-urlencoded\r\n";
- req += "Content-Length: ";
- req += pst.length();
- req += "\r\n\r\n";
- req += pst;
- if (!send(s, req.c_str(), req.length(), 0)) {
- printf ("Request konnte nicht gesendet werden!\n");
- } else {
- cout << endl << "--- --- REQ --- ---" << endl << req << endl << "--- --- --- --- ---" << endl << endl;
- }
- }
- }
- }
- system ("PAUSE");
- return 0;
- }
- int startWinsock (void) {
- WSADATA wsa;
- return WSAStartup(MAKEWORD(2,0),&wsa);
- }
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?