Daten an PHP Datei übergeben



  • Ich stecke noch etwas in den Kinderschuhen, was die C++ Programmierung betrifft und habe daher auch eine leichte Frage.

    Folgendes Problem: Ich möchte während der Laufzeit meines Programmes einem PHP Script im Internet Daten übergeben. Internetverbindung steht. PHP ist auch nicht das Prob.
    Ich dachte mir, das C Programm öffnet einfach eine URL nach dem Schema:

    http://www.meinedomain.de/index.php?var=test&var2=trallala

    Was von dem Aufruf zurückkommt ist mir egal und muss nicht ausgewertet werden!

    Danke für eure Hilfe.
    Gruß
    Michael.



  • Versteh ich jetzt nicht so ganz und nur zum besseren Verständnis:
    Also dein C++ (oder C) -Programm läuft und übergibt irgendwelche Daten. Wenn du das an eine URL schicken willst, ist die Sache ja nicht ganz so trivial.

    Wenn ich das richtig verstanden haben, dann hilft dir das vielleicht weiter:
    http://curl.haxx.se/

    Ansonsten müsstest du dich schon intensiver mit Netzwerkprogrammierung befassen. Allerdings weiss ich auch nicht, was dann passieren soll, wenn die Rückgabedaten nicht wichtig sind.



  • Eigentlich möchte ich nichts weiter tun, als von meinem C Programm eine Internet URL aufrufen, ohne das ein IE Fenster aufgeht oder sonst was.

    Durch den URL-Aufruf kann ich halt meine Datenübergeben ohne mich mit irgendwelchen Protokollen zu beschäftigen. index.php?var=1 übergibt die Variable "var" mit dem Wert "1" an ein PHP Script. Mit dem unberücksichtigten Rückgabewert möchte ich nur sagen, dass das Ergebnis der Aktion unwichtig ist, also es mich nicht interessiert, ob es erfolgreich durchgeführt wurde! Kann ja sein, dass gerade keine Internetverbindung vorhanden ist.

    Danke für deine schnelle Antwort.



  • du willst also einfach einen http request mit den passenden php argumenten durchführen? liegt dein problem darin, dass du nicht weißt, wie du das machen sollst?
    in reinem standard c++ gibt es das internet nicht. wenn du eine bestimmte klassenbibliothek verwendest, oder z.b. WinAPI, dann melde dich.



  • Jo genau .. ich will eigentlich nur einen simplen HTTP Request realisieren!



  • Nochmal: Standard C++ kennt kein HTTP oder whatever. Welche Klassenbibliothek (MFC/VCL/QT/etc.pp) oder zb WinAPI (unter Windows) willst du verwenden?



  • Wie gesagt, ich kenne mit mit dem C++ Kram noch nicht so aus - PHP ist meine Welt.
    Das ganze ist ein Service für Windows NT bzw. XP, der alle 10 Minuten eine bestimmte Internetseite mit Paramtern aufrufen soll. Deshalb interessieren mich auch nicht die empfangenen Daten.
    Den Service Mist habe ich soweit hinbekommen und jetzt stehe ich "lediglich" vor der Hürde eine Webverbindung aufzubauen. Gestern Nacht habe ich mich noch in Sockets eingearbeitet und lokal funktioniert es schon. Jedoch schaffe ich es nicht eine Verbindung zu einer URL aufzubauen - nur zu einer IP.

    Hier ist der Code:

    #include <windows.h>
    #include <winsock.h>
    #include <stdio.h>
    #include <iostream.h>
    #include <conio.h>
    
    //Prototypen
    int startWinsock(void);
    
    int main()
    {
      long rc;
      SOCKET s;
      SOCKADDR_IN addr;
      struct hostent *h;
      char buffer[256];
    
      // Winsock starten
      rc=startWinsock();
      if(rc!=0)
      {
        printf("Fehler: startWinsock, fehler code: %d\n",rc);
    	getch();
        return 1;
      }
      else
      {
        printf("Winsock gestartet!\n");
      }
    
      //
    
      s=socket(AF_INET,SOCK_STREAM,0);
      if(s==INVALID_SOCKET)
      {
        printf("Fehler: Der Socket konnte nicht erstellt werden, fehler code: %d\n",WSAGetLastError());
        getch();
    	return 1;
      }
      else
      {
        printf("Socket erstellt!\n");
      }
    
        h = gethostbyname("www.test.de");
        if (h == NULL)
        {
            cout << "Cannot resolve hostname\n";
            WSACleanup();
            exit(1);
        }
    
      // Verbinden
      memset(&addr,0,sizeof(SOCKADDR_IN)); // zuerst alles auf 0 setzten
      addr.sin_family=AF_INET;
      addr.sin_port=htons(80); // wir verwenden mal port 12345
      memcpy(&(addr.sin_addr.s_addr), h->h_addr, sizeof(int));
      //addr.sin_addr.s_addr = inet_addr("www.urweb.de");
    
      rc=connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR));
      if(rc==SOCKET_ERROR)
      {
        printf("Fehler: connect gescheitert, fehler code: %d\n",WSAGetLastError());
    	getch();
        return 1;
      }
      else
      {
        printf("Verbunden mit www.test.de...\n");
      }
    char request[] = "GET /dnsfwd/index.php HTTP/1.0\r\n\r\n";
    printf("Starte Abrage...\n");
    send(s,request,strlen(request),0);
    printf("Warte auf Daten...\n\n\n");
    while(rc!=SOCKET_ERROR){
    	rc = recv(s,buffer,1024,0);
    	printf (buffer);
    }
    getch();
      closesocket(s);
      WSACleanup();
      return 0;
    }
    
    int startWinsock(void)
    {
      WSADATA wsa;
      return WSAStartup(MAKEWORD(2,0),&wsa);
    }
    




  • Vielen Dank!


Anmelden zum Antworten