Etwas an den Server schicken



  • Hallo, jetzt habe ich es irgentwie geschaft mich beim Server anzuhängen. Ich möchte jetzt einem PHP script etwas zuschicken. Eine Nachricht.

    Wie mache ich das am besten. Mit WinInet und natürlich C oder C++.



  • Wenn der Server ein HTTP Server ist, dann schickst du dem Server einfach einen HTTP Request. Du kannst GET oder POST verwenden, evtl. auch HEAD.

    Um so einen Request abzuschicken gibts nun mehrere Möglichkeiten, du kannst einfach einen Socket aufmachen, connecten, den Request selbst zusammenstöpseln und dann mittels send() rausschicken -- und die Antwort mittels recv() zurücklesen. Dazu solltest du dir einiges zum Thema HTTP und win-sockets / berkeley-sockets ansehen.

    Oder du kannst eine fertige Library verwenden die das macht. MFC hat z.B. die Klassen CInternetSession, CHttpConnection und CHttpFile über die man soetwas machen kann. Die nehmen dir z.B. auch die Arbeit ab wenn du den Proxy den der User im IE eingestellt hat verwenden willst.



  • Ich mach das z.B. so:

    POST /forum/posting-var-.html HTTP/1.1
    Accept: /
    Referer: http://www.c-plusplus.net/forum/posting-var-mode-is-reply-and-t-is-166085.html
    Accept-Language: de
    Content-Type: application/x-www-form-urlencoded
    Accept-Encoding: gzip, deflate
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
    Host: www.c-plusplus.net
    Content-Length: 199
    Proxy-Connection: Keep-Alive
    Pragma: no-cache
    Cookie: vieworhide=lastforum_idX4XXresize_message_area_linksXinlineXX; phpbb2mysql_data=a%3A0%3A%7B%7D; phpbb2mysql_sid=e98ffe4f779046b26a0594db23cc4ed3

    username=Tester&subject=&message=Ich+mach+das+z.B.+so%3A%0D%0A&quote_username=&helpbox=Blendet+die+Smilieliste+ein.&mode=reply&quote_from_topic_review_pid=0&bin_immer_true=1&t=166085&preview=Vorschau



  • hustbaer schrieb:

    Wenn der Server ein HTTP Server ist, dann schickst du dem Server einfach einen HTTP Request. Du kannst GET oder POST verwenden, evtl. auch HEAD.

    Um so einen Request abzuschicken gibts nun mehrere Möglichkeiten, du kannst einfach einen Socket aufmachen, connecten, den Request selbst zusammenstöpseln und dann mittels send() rausschicken -- und die Antwort mittels recv() zurücklesen. Dazu solltest du dir einiges zum Thema HTTP und win-sockets / berkeley-sockets ansehen.

    Oder du kannst eine fertige Library verwenden die das macht. MFC hat z.B. die Klassen CInternetSession, CHttpConnection und CHttpFile über die man soetwas machen kann. Die nehmen dir z.B. auch die Arbeit ab wenn du den Proxy den der User im IE eingestellt hat verwenden willst.

    Ich wollte WinInet verwenden. Soviel ich weis ist es gleich/ähnlich wie berkeley-Sockets ( 😕 ).

    Ich mache das zur Zeit in dieser Reihenfolge:

    Internet Verbindung? : InternetOpen()
    Mit URL verbinden : InternetOpenUrl()

    So und ab hier keine Ahnung mehr 🙄

    Will ich send() vewrwenden will der Parameter die ich nicht habe. Und ich habe keine Ahnung ob der Weg der Richtige ist.

    Ich weis noch das ich auch den Port angeben muss ( Port 80 ). Aber wo?

    Ich möchte ja nur ein paar Parameter an ein PHP-Script schicken. 😞 😃



  • Hallo, jetzt bin ich auf der Suche nach meinem Problem auf das hier aus dem BlitzBasic Forum getroffen.

    http://www.blitzforum.de/forum/viewtopic.php?t=20678

    hmmm, ich könnte mir jetzt BlitzBasic kaufen und eine Exe erstellen und später über mein Programm auf die Exe, die ich mit BlitzBasic erstellt habe, zugreifen und über diese Exe etwas an PHP-Script schicken............

    Ist hier einer der das in C übersetzen kann. Bzw. es müssen doch ähliche Funktionen auf in der WINAPI geben. Ich glaube nicht das die BlitzBasic Entwickler da was eigenes programmiert haben. Die greifen doch auch auf die API zu.



  • WinInet != WinSockets.
    WinSockets ist sehr ähnlich wie Berkeley Sockets, WinInet nicht.

    Ich würde dir wirklich empfehlen die MFC Klassen CInternetSession, CHttpConnection und CHttpFile zu verwenden, die kapseln intern eben diese ganzen WinInet aufrufe.

    Ist recht einfach, zuerst machst du ein neues CInternetSession Objekt, dann machst du ein CHttpConnection Objekt dem du das CInternetSession Objekt mitgibst, plus dir URL vom Server und den Port, und dann machst dir mit der OpenRequest Funktion des CHttpConnection Objektes ein CHttpFile Objekt. Fertig.


Anmelden zum Antworten