Hola community!! Habe Probleme mit HTTP-Requests via Sockets!! Irgendwer weiss immer mehr?!
-
Begüße liebe Menschen!!
Ich bin mittlerweile mit schwarzen Augenringen und leichter Demotivation am coden.
Habe mich da wirklich etwas in ein Problem verbissen!!
Ideen kurzfristig am Ende!!Folgendes Problem:
Ich versuche gerade via WindowsSockets eine HTTP-Get Anforderung an Web-Server zu übermitteln.
Also direkte Kommunikation per ByteStrings!!
Das Ganze über ein Datagram-Socket Objekt, da HTTP ja zustandslos sein soll.
Socket läuft und lässt sich problemlos connecten, auch die send() Funktion scheint ihre Arbeit zu machen.
Jedoch kommt nie eine Antwort zurück!!Frage1:
Weiss jemand was im FD_WRITE Aufruf beim ersten ausführen der connect() F. erledigt werden sollte?
Identifikation oder so??F2:
Sollte man bei einem zustandslosen Protocol die connect() F. bei jedem send() Aufruf ausführen, oder einmalig nach der Serverauswahl??
Ich hätte doch mit dem DatagramSocket schon für zustandslosigkeit gesorgt,
einmalige connection müsste doch reichen, oder irre ich??Bitte um kurze Hilfe, falls jemand Bescheid weiss!!
Wäre super. Stehe sichtlich auf der Leitung!!
Danke jedenfalls!!
-
Das Ganze über ein Datagram-Socket Objekt

Es geht nur mit nem Stream-Socket.
-
Naja?? Es funktioniert mit Beidem.
Aber zustandslosigkeit hätte ich so ausgelegt!Versucht habe ich allerdings beides mit dem selben Resultat!!
Keine Ahnung
-
Du hast das mit dem zustandslos ein bisschen falsch verstanden.
Zeig bitte deinen Code...
-
Noch ne Frage. Werden diese HeaderInfo Messages überhaupt mit send() versendet
oder mit eignener message Funktion??

-
Der Code ist sehr massiv und noch dazu sehr unübersichtlich!!
Habe in Lib ausgelagert und GUI erstellt!!
Aber grunsätzlich:WSAStartup -> socket() -> connect() -> WSAAsyncSelect -> send()-> recv()
-
N_2 schrieb:
Naja?? Es funktioniert mit Beidem.
Nein. Es geht nur mit TCP-Verbindungen. Falls UDP auch gehen sollte, dann macht der Server was falsch.
PS: Warum verwendest Du nicht WinInet?
-
Hi wie geht's?
Ich versuche eigentlich eine Art Live-messaging App zu basteln!
Eingabe-> send -> Antwort
Und ich kenne keine WinInet Funktionen die diese Ebene bieten,
darum habe ich Sockets verwendet!!Hast du Tip für bessere Lösung?

-
Jochen Kalmbach schrieb:
Nein. Es geht nur mit TCP-Verbindungen. Falls UDP auch gehen sollte, dann macht der Server was falsch.
Du scheinst über den Server-Traffic bescheid zu wissen!!
Wie fuktioniert das mit beispielsweise einer GET Anforderungen, sagen wir per Socket?
Einmaliger connect(), dann Anforderungen per send() als String und auf recv() warten, war einer meiner Versuche.
Aber auf recv() kann ich lange warten, also eigentlich auf FD_READ:!!
Ich habe FD_READ aber bei WSAAsyncSelect() eingebunden!
Müsste eigentlich Antwort registrieren, aber nichts!!Irgendwas scheine ich einfch nicht zu kapieren!!

-
Wie sieht dein GET-Request aus?
-
-
Aber schon mit realen Daten!! klar!!
-
Hast du auch eine leere Zeile danach?
-
Benötigt der server eine zeilenumbruch am ende
oder wirklich eine Leerzeile, denn die hatte ich nicht!!
Mal teste!! Danke
-
N_2 schrieb:
Benötigt der server eine zeilenumbruch am ende
oder wirklich eine Leerzeile, denn die hatte ich nicht!!
Mal teste!! DankeWarum liest Du Dir nicht die RFC durch, dann brauchst Du nicht so viel zu raten...
-
Hallo Jochen!
Erstens war meine Antwort zwecks Zeilenumbruch ohnehin Nonsens, da ein Zeilenumbruch wohl reichen wird.
Aber ich hatte den String sowieso mit EOF versehen!!Zu RFC muss ich dir sagen, es ist nicht so dass ich mich nicht eingelesen habe und nun alles von euch wissen möchte.
Auch ist es oft weniger ein Raten als viel mehr ein Versuchen da das gelesene auch nicht immer funktioniert!!Aber Danke vielleicht hast du recht!!
-
"GET / HTTP/1.1\r\nHost: www.example.net\r\n\r\n"
so muss es aussehen.
-
Solltest du mein Coding-Problem jedoch auch kurz und bündig lösen können,
wäre ich dir trotzdem verbunden!!
Falls du die Lösung bereits kennst!!σ
-
Hi mueller!
Super Danke!!
Ich denke damit kann ich etwas anfangen!!
Danke für die Produktivität!!