Daten an das Internet senden
lima-city → Forum → Programmiersprachen → C/C++ und D
anfragen
anfnger
aufruf
aussehen
beschrieb
client
connection
daten
ebenfall
funktion
hilfestellung
konsole
misserfolg
protokoll
quellen
send
skript
socket
ungefhr
window
-
Hallo,
ich suche eine Methode,
um informationen an eine Internetseite zu senden (über http://)
Ich habe zwar gesucht, aber irgendwie kam dabei kein ergebnis heraus.....
Mein Programm soll so aussehen:
Man gibt Daten in Textfelder ein, klickt auf absenden und die Daten werden im Hintergrung an eine Seite gesendet.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Sorry, aber ich wusste nicht, dass dies über winsock geschieht.
Also, nun ist mein Problem, dass ich zwar Chat-Clients + Server gefunden habe, aber nirgends erwähnt wird, wie ich Daten an eine Internet-Seite senden kann, und dann darauf zugreifen. -
Wie wäre es, wenn du einfach beschreibst, was du machen willst?
Dann ist die Hilfestellung einfacher, da man dann auch darauf eingehen kann, wie du es lösen willst.
MfG Lucas -
Also, ich meine das so:
In dem Programm gibt man Daten ein, klickt auf einen button.
Dann werden die Daten per Socket an eine Seite gesendet.
Diese Seite verarbeitet die Daten dann weiter.
Die Daten sind nur wenige Zeichen.
Es sind ca. 5 verschiedene Datensätze. -
Willst du POST oder GET verwenden? Da liegt schonmal der erste Knapppunkt.
-
Da es nur recht kurze Datensätze sind,
ist es mir egal ob POST oder GET
Aber POST wäre mir lieber.
(Sollte es nicht mit POST gehen, oder komplizierter sein, dann GET) -
Wenn du unter Windows arbeiten willst, ist Winsock schonmal ein guter Ansatzpunkt. Über ein Socket stellst du eine rohe Datenverbindung zu einem Server her - wahlweise per TCP oder UDP (in deinem Fall nimmst du TCP). Das ist genau das gleiche, als wenn du auf der Konsole z.B.
telnet www.example.com 80
eingibst.
Über dieses Socket kannst du dann Daten senden und empfangen (mit send() und recv()), wobei du natürlich die "Sprache" des Webservers (in deinem Fall das HTTP-Protokoll) abbilden musst. Wie das ungefähr auszusehen hat, kannst du bei Wikipedia nachlesen: http://de.wikipedia.org/wiki/HTTP#HTTP_POST
Probier das auch ruhig mal mit telnet auf der Konsole aus: Wenn du die HTTP-Anfrage abschickst, bekommst du den HTML-Code der entsprechenden Website zurück :-)
Es kann irgendwann notwendig werden, etwas tiefer in HTTP einzusteigen. Einige weiterführende Quellen findest du auf Wikipedia. Die RFCs sind quasi die Standards, in denen das Protokoll beschrieben wird. Dort steht wirklich alles drin, allerdings nicht immer leicht verständlich ^^
Aber um nochmal zum Anfang zurückzukommen: Socketprogrammierung klingt komplizierter als sie ist. Unter http://beej.us/guide/bgnet/ findest du einen gut geschriebenen und IMHO leicht verständlichen Guide über Internet Sockets. Der ist zwar für Unix-Systeme ausgelegt, die Programme sollten sich aber theoretisch mit wenigen Änderungen auf Windows übertragen lassen (siehe hierzu auch den entsprechenden Abschnitt im Guide). Wenn du sauber arbeitest, musst du nur andere Headerfiles einbinden :-)
MfG,
thw -
Hi,
Noch ein kleiner Tipp:
Wenn du die Daten selbst mit der Anfrage an ein PHP Script "sendest", ersparst du dir vermutlich viel Arbeit (dein Server muss aber PHP undstützen und du musst natürlich wissen wie man mit PHP umgeht). Das aufrufen von http://www.meineseite.de/meinscript.php?variable1=daten1&variable2=daten2..... erledigt dann schon den Datentransfer.. den zurückgegeben Code kannst du auch gleich als Statusmessage benutzen (z.B. kann dein Skript 0 für erfolg und 1 für misserfolg ausgeben statt html code). Was das PHP Skript dann mit den Daten anfängt ist definitionssache. Es empfiehlt sich aber das Skript robust zu gestalten.. irgend ein Idiot könnte rausfinden wie der Name und die Parameter des Skriptes sind und Unfug damit treiben.
Elandir -
Das Schema für einen einfachen Client sieht ungefähr so aus:
socket()
connect()
send()
select()
recv()
close() bzw. closesocket() unter Windows
Wenn du nur unter Windows programmierst, dann solltest du die entsprechenden Funktionen, die in der WinAPI ebenfalls bereitgestellt werden, benutzen:
WSASocket()
WSAConnect()
WSASend()
WSAWaitForMultipleEvents()
WSARecv()
closesocket()
Unter Windows musst du ausserdem, unabhängig davon, welche Funktionen du benutzt, vor Aufruf der ersten Netzwerkfunktion WSAStartup() aufrufen und nachdem du mit allem fertig bist WSACleanup(). Die beiden Funktionen laden und entladen die entsprechende Windows-DLL, die für Netzwerkkommunikation zuständig ist.
Speziell zu einem Client für HTTP-Kommunikation noch:
Du musst vor dem Aufruf von send() bzw. WSASend() deinen HTTP-Request "zusammenbauen" und den dann komplett losschicken. Beim Empfangen der Serverantwort kannst du dann die Antwort des Servers parsen.
Ausserdem würde ich an deiner Stelle GET benutzen, da dies einfacher zu implementieren ist. In den HTTP-Header solltest du auch "Connection: close" einfügen, weil das für einen Anfänger leichter ist.
Ein Header, wie du ihn brauchst, könnte ungefähr so aussehen:
GET /verz/script.php?daten=bla%20ha&daten2=huhu HTTP/1.1\r\n
Host: www.example.com\r\n
Connection: close\r\n
\r\n
Die "\r\n"s sind als Steuerzeichen mitzusenden, also als CR und LF.
Mehr Infos gibt es erst, wenn du selbst auch mehr Infos gibst
Beitrag geaendert: 27.2.2007 19:45:50 von hannover-liga -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage