DotNet: HTTP-Pipelining
lima-city → Forum → Programmiersprachen → Sonstige Programmiersprachen
ahnung
anfrage
antwort
antworten
datei
frage
fragestellung
helfen
hilfe
http
person
problem
protokoll
richtigen reihenfolge
senden
server
versuchen
vorwurf
warten
wissen
-
Moin,
ich arbeite gerade an einer HTTP-Clientanwendung (aber kein Browser. Soll nur mit einer bestimmten Homepage interagieren). Dazu ist es ziemlich wichtig, dass die HTTP-Requests und -Post-Daten gepipelined werden, da nicht der Zeitpunkt der Antwort entscheidend ist, sondern nur der Zeitpunkt der Ankunft der Anforderungsdaten (Es müssen quasi alle ohne Zeitdifferenz, aber trotzdem in der richtigen Reihenfolge versendet werden).
Ich glaube nicht, dass die wenigen, die hier DotNet-Erfahrung haben auch schon einmal so etwas benutzt haben, aber man kann es ja mal versuchen ;) -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ich kenne mich nun nicht so sehr mit dem HTTP Protokoll aus, aber da im Endeffekt dies auch nur ein übergeordnetes Layer vom TCP/IP Stack ist, solltest du letzten Endes die Möglichkeit haben den Ankunftszeitpunkt direkt aus den jeweiligen TCP Paketen auslesen zu können.
@Richtige Reihenfolge/Zeitdifferenz: Dir ist schon klar das die Pakete querbeet ein ankommen können und auf dem TCP/IP Stack erst in die richtige Reihenfolge gebracht werden? -
Ich kenne mich nun nicht so sehr mit dem HTTP Protokoll aus, aber da im Endeffekt dies auch nur ein übergeordnetes Layer vom TCP/IP Stack ist, solltest du letzten Endes die Möglichkeit haben den Ankunftszeitpunkt direkt aus den jeweiligen TCP Paketen auslesen zu können.
@Richtige Reihenfolge/Zeitdifferenz: Dir ist schon klar das die Pakete querbeet ein ankommen können und auf dem TCP/IP Stack erst in die richtige Reihenfolge gebracht werden?
Actually no. Und was ist die Konsequenz, die ich jetzt daraus ziehen soll? Dann drück ich es halt so aus: Die Anfragen sollen in der richtigen Reihenfolge verarbeitet werden? -
Ich finde die Darstellung der Problemstellung shcon ziemlich genau.
Ich mein, ich versteife mich zwar nicht zwingend darauf, aber gefragt habe ich, wie HTTP Pipelining in VB.NET funktioniert.
Als Zusatzerklärung, damit Alternativerklärungen kommen können habe ich erklärt, dass ich HTTP-Requests senden möchte, sodass die mit minimaler Zeitdifferenz, aber in der richtigen Reihenfolge am Server verarbeitet werden. \'Ich kann das ja gerne an einem Beispiel verdeutlichen:
Auf dem Servre möge eine PHP-Datei liegen, welche bei jedem Aufruf einen per GET übertragenen Parameter \"nr\" und ein Leerzeichen in eine Datei schreibt. Die php-Seite selber soll groß sein, sodass eine signifikante Verzägerung eintritt, bis sie vollständig zurückübertragen wurde.
Nun soll das Programm in der Lage sein, zehn Requests (oder mehr) abzusetzen, sodass diese möglichst fix aufeinanderfolgen (Sprich es ist absolut inakzeptabel die Methode HttpWebrequest.GetResponse zu benutzen, da diese die Anwendung stoppt, bis eine Antwort erhalten wurde), aber das am Ende in der von PHP geschriebenen Datei nicht \"3 5 10 7 4 6 8 1 9 2\" steht, sondern \"1 2 3 4 5 6 7 8 9 10\" steht.
Zu Deutsch: Möchte HTTP-Queries möglichst direkt nacheinander rausschicken, ohne auf Antwort zu warten, sodass sie in der richtigen Reihenfolge verarbeitet werden. -
Ohne großes Grundwissen würde ich dir einfach vorschlagen eine MySQL-Datenbank zwischenzuhauen.
Auf die könntest du - denke ich mal - direkt zugreifen, wenn VB.NET das unterstützt. Also direkt Querys an diese senden.
Danach einfach mit einem Cronjob o.ä. das PHP-Script seinen Dienst machen lassen.
MfG Lucas
P.S.: Es ist immer von Vorteil genau zu schreiben, was man wirklich machen will, da man meist in der Überlegung zur Lösung einen Fehler/neues Problem mit einbaut. -
Ah...
@Problem: Naja, den Response bekommst du auf jeden Fall,egal wie kurz oder lang das ganze war. Das liegt aber in der Natur von TCP/IP. Denn der Handshake erfolgt immer. Was du hier suchst wäre UDP und mit PHP nicht realisierbar. Zumal man allgemein für diese Art von Logik auf eine Server/Client Architektur setzt die direkt miteinander kommunizieren kann. Das ist bei Client/PHP nicht gegeben, da HTTP eine Stateless Protokoll ist. Es ist wird nie gewährleistet das deine Anfrage wirklich angekommen ist, du musst vor dem Absenden deiner neuen Anfrage schon wissen ob die letzte Anfrage erfolgreich war und dafür benötigst du den Request den du zurückerhälst. Für mich ist das ein grundlegender Logikfehler.
Mal davon abgesehen das die Datei, die du mit PHP beschreiben willst im schlimmsten Fall mit einem Readlock versehen ist solange die PHP Datei in selbige schreibt. Wenn du Glück hast wartet PhP solange, bis die Datei beschrieben wurde, aber im schlimmsten Fall könnten Daten überschrieben werden. -
@Problem: Naja, den Response bekommst du auf jeden Fall,egal wie kurz oder lang das ganze war. Das liegt aber in der Natur von TCP/IP. Denn der Handshake erfolgt immer. Was du hier suchst wäre UDP und mit PHP nicht realisierbar. Zumal man allgemein für diese Art von Logik auf eine Server/Client Architektur setzt die direkt miteinander kommunizieren kann. Das ist bei Client/PHP nicht gegeben, da HTTP eine Stateless Protokoll ist. Es ist wird nie gewährleistet das deine Anfrage wirklich angekommen ist, du musst vor dem Absenden deiner neuen Anfrage schon wissen ob die letzte Anfrage erfolgreich war und dafür benötigst du den Request den du zurückerhälst. Für mich ist das ein grundlegender Logikfehler.
OH NEIN EIN LOGIKFEHLER Es war nicht meine Frage, ob das sinnvoll ist, oder nicht, und ob das Idiotensicher ist, oder nicht. Ich habe lediglich gefragt, wie ich mehrere Queries schnell hintereinander absetzen kann. Wenn du das nicht weißt - dann lass es halt. Wenn es übrigens nicht sinnvoll wäre, dann wäre das Pipelining gar nicht erst in HTTP implementiert worden.
Mal davon abgesehen das die Datei, die du mit PHP beschreiben willst im schlimmsten Fall mit einem Readlock versehen ist solange die PHP Datei in selbige schreibt. Wenn du Glück hast wartet PhP solange, bis die Datei beschrieben wurde, aber im schlimmsten Fall könnten Daten überschrieben werden.
Die Situation mit der zu schreibenden Datei habe ich mir lediglich erdachtr, damit endlich klar wird, was ich mit \"in der richtigen Reihenfolge verarbeitet\" gemeint ist. Bisher kamen von dir drei Posts, und alle gingen absolut an der Fragestellung vorbei. Wenn du also keine Ahnung hast, wie das Problem zu lösen ist, dann lass es einfach.
Ohne großes Grundwissen würde ich dir einfach vorschlagen eine MySQL-Datenbank zwischenzuhauen.
Auf die könntest du - denke ich mal - direkt zugreifen, wenn VB.NET das unterstützt. Also direkt Querys an diese senden.
Danach einfach mit einem Cronjob o.ä. das PHP-Script seinen Dienst machen lassen.
Geht ebenfalls völlig an der Aufgabenstellung vorbei, sorry.
Es ist immer von Vorteil genau zu schreiben, was man wirklich machen will, da man meist in der Überlegung zur Lösung einen Fehler/neues Problem mit einbaut.
Was ich machen will: Schnell mehrere HTTP-Queries raussenden, aber in der richtigen Reihenfolge.
Überlegung zur Lösung: Pipelining.
Ich bin aber gerne bereit aufs Pipelining zu verzichten, wie beschrieben, solange nur die Geschwindigkeit und Reihenfolge gewährleistet ist. -
Ich hab zwischenzeitlich mal google besucht und musste feststellen das auf deine Fragestellung bei Google mehr als genug Antworten geliefert werden. Selbst in der MSDN steht was drin...
-
Das lässt sich micht so einfach über http realisieren. Das ist auch ein großes Problem von Ajax, annähern kann man sich, indem man mit Instanzen arbeitet. Bei dir müsste das doch kein Problem sein:
- Anfrage Nr.1 senden, warten auf Antwort (Quelltext den das PHP-Script ausgibst)
- Anfrage Nr.2 senden, warten
- Anfrage senden, warten, senden, warten
Ein Problem besteht erst, wenn du mehrmals gleichzeitig eine Anfrage sendest, aber wieso solltest du das machen? Ich denke dein kompletter Ansatz ist falsch, denn warum sollte ich einem Programm eine Nummer mitgeben, wenn ich einfach zählen kann wie viele Anfragen es gibt (PHP-Script schreibt 1 2 3 und nicht den Parameter)?
Du könntest vielleicht daran arbeiten, deine Latenz zu verringern indem du nicht in Textdateien schreibst sondern auf eine gute Datenbankarchitektur setzt.
Beitrag geändert: 13.6.2008 19:32:05 von trueweb
Beitrag geändert: 13.6.2008 19:32:52 von trueweb -
Ich hab zwischenzeitlich mal google besucht und musste feststellen das auf deine Fragestellung bei Google mehr als genug Antworten geliefert werden. Selbst in der MSDN steht was drin...
Dann benutzen wir wohl verschiedene Googles/MSDN\'s, denn ich habe auch nach mehrmaligem Suchen mit verschiedenen Suchstrings absolut nicht hilfreiches gefunden.
WAS ich gefunden habe, waren zahllose Hinweise, wie man beim Feuerfuchs das HTTP Pipelining aktiviert, was ich ebenfalls gefunden habe, waren zahlreiche Artikel, in denen die Verarbeitungsschichten von ASP.NET als \"HTTP-Pipeline\" bezeichnet wurde und was in der MSDN zu finden war, waren mehrere Artikel in denen beschrieben wurde, dass HTTP-Pipelining im Hintergrund automatisch benutzt wird.
Da letzteres aber bedauerlicherweise nicht der Fall ist, und auch nicht unbedingt mit der Art und Weise vereinbar ist, wie dort normalerweise HTTP-Queries abgesetzt werden.
Also komm mir nicht mit Google und MSND, ohne wenigstens ein paar Links dazuzuschrieben, denn selbstversätndlich habe ich mich totgegoogelt bevor ich hier einen Thread eröffne. -
Zuerst einmal lege bitte deine Arroganz und Überheblichkeit ab!
Stelle erst recht nicht die Kompetenz von anderen Personen in Frage, wenn du selber um Hilfe fragst!
Die Leute, die hier posten, versuchen nur ein Lösungvorschlag zu geben.
Wenn dieser in keinster Weise zutrifft, dann haben diese Leute entweder deine Fragestellung falsch verstanden, oder du hast dich einfach unklar ausgedrückt.
Bei jeglicher Möglichkeit liegt es an dir, dein Anliegen verständlich auszudrücken!
Du brauchst die Hilfe nicht wir! Also musst du so fragen, das wir dir helfen können und uns nicht als inkompetent darstellen, nur weil du dich nicht artikulieren kannst oder willst.
Es liegt an dir, also weise diese Schuld bitte nicht von dir!
Es gibt natürlich auch Fälle, wo Personen antworten, die gar keine Ahnung haben oder sich keine Gedanken dazu gemacht haben. Allerdings hat man dann den Anstand zu besitzen dies freundlich und vor allem höflich zu sagen.
Ich hoffe, ich habe den Text einigermaßen sachlich verfasst.
Also mäßige bitte deinen Ton und unterlasse jegliches weiteres angemaule.
Dann wirst du vllt auch eine entsprechenden Hinweis/Hilfestellung finden. -
Zuerst einmal lege bitte deine Arroganz und Überheblichkeit ab!
Stelle erst recht nicht die Kompetenz von anderen Personen in Frage, wenn du selber um Hilfe fragst!
Die Leute, die hier posten, versuchen nur ein Lösungvorschlag zu geben.
Wenn dieser in keinster Weise zutrifft, dann haben diese Leute entweder deine Fragestellung falsch verstanden, oder du hast dich einfach unklar ausgedrückt.
Bei jeglicher Möglichkeit liegt es an dir, dein Anliegen verständlich auszudrücken!
Du brauchst die Hilfe nicht wir! Also musst du so fragen, das wir dir helfen können und uns nicht als inkompetent darstellen, nur weil du dich nicht artikulieren kannst oder willst.
Es liegt an dir, also weise diese Schuld bitte nicht von dir!
Es gibt natürlich auch Fälle, wo Personen antworten, die gar keine Ahnung haben oder sich keine Gedanken dazu gemacht haben. Allerdings hat man dann den Anstand zu besitzen dies freundlich und vor allem höflich zu sagen.
Ich hoffe, ich habe den Text einigermaßen sachlich verfasst.
Also mäßige bitte deinen Ton und unterlasse jegliches weiteres angemaule.
Dann wirst du vllt auch eine entsprechenden Hinweis/Hilfestellung finden.
Da ich es langsam aufgebe, kann ich e mir wohl leisten eine geeignete Antwort zu verfassen:
Ich hab recht klar und deutlich gesagt, was mein Problem war. Ich habe nicht nur im Titel, sondern auch im Eingangsposting ziemlich deutlich gesagt, dass ich wissen möchte, wie HTTP-Pipelining in VB.Net zu realisieren ist. Ich habe sogar noch halbwegs gelassen reagiert, als daraufhin ein Post kam, der bereits begann mit \"Ich kenn mich nicht so sehr mit dem HTTP-Protokoll aus\".
Als dann durchsickerte, dass der Gegenüber einfach keine Ahnung hatte, was ich wollte, habe ich mir überlegt ein anschauliches Beispiel zu machen, um zu erklären, was ich mit \"in richtiger Reihenfolge verarbeitet\" meine. Daraufhin erhilt ich die Antwort, dass sich dieses Beispiel doch mit MySQL und einer Bearbeitung der PHP-Datei viel einfacher hinbekäme - behalte bei der Beurteilung des Sinngehaltes dieser Antowrt bitte im Hinterkopf, dass ich im Eingangsposting bereits explizit geschildert habe, dass ich einen Client schreibe, und dass es mir darum geht, einen möglichst kleinen Zeitraum zwischen dem Senden einzelner Requests zu haben.
Ich bekomm noch eine weitere Antwort, in der zwar der erste Teil durchaus gerne interpretiert werden darf als \"da will einer nur helfen, dass ich nicht aus Vershene etwas übersehe und etwas instabiles schreibe\", dessen zweiter Teil aber vollkommen aus dem Zusammenhang gerissen ist.
Ich erkläre also nochmal, wo das Problem ist. Und erhalte als Antwort, dass ja völlig offensichtlich ist, dass man einfach nur googeln oder in der MSDN nachschauen braucht.
Das ist 1. Ein Vorwurf, ich sei zu bescheuert an Google zu denken
2. Ein Vorwurf, ich sei zu bescheuert Google zu benutzen
und 3. nicht einmal, um sienen Standpunkt überzeugend darzustellen einer der Links drinsteht, die man ja angeblich Zuhauf bei Google findet.
Nun, ich wittere nach wie vor Missverständnis und versuche klarzustellen, wieso mir all die vielen Google-Treffer und MSDN-Artikel nichts bringen.
Und jetzt sagst du mir, ich soll mal bitte meine Arroganz ablegen? Ja, ich habe um Hilfe gebeten. Mir war auch klar, dass ich ziemlich geringe Chancen habe, dass mir da einer helfen kann, damit kann ich leben.
Aber es ist schlicht unnötig, wenn schon eine solch klare Frage formuliert wurde, immer wieder Antworten zu alternativen Problemen zu geben oder mir zu saen, dass das was ich vorhabe doch total unnötig ist. Es ist notwendig, sonst hätte ich nicht gefragt. Ihr könnt gerne meinen Lösungsweg in Zweifel ziehen - und wie bereits dargelegt ist der Lösungsweg NICHT \"viele Queries in kurzer Zeit senden\", sondern der Lösungsweg ist \"Pipelining\", denn das Problem ist \"Viele Queries in kurzer Zeit senden\".
Ich bin nach wie vor bereit Lösungsvorschläge dankend anzunehmen. Aber keine Problemvorschläge, denn was das Problem ist kann ich leider nicht beeinflussen. -
Brummel, so...
Das die MSDN/Google Inhalte nur für ASP.net waren ist mir auch klar, aber in dem Falle könnte man eigentlich davon ausgehen können das die Person die Hilfe ersucht auch so intelligent ist vielleicht mal über den Tellerrand hinaus schaut oder besser noch nachschaut wie man HTTP Pipelining selbst implementiert. Ich hab nun auf diversen Seiten gelesen und alle haben zu Grunde das man eine direkte Verbindung zum Ziel aufbauen muss. Sprich eine TCP/IP Verbindung die solange besteht bis sie geschlossen wird. Im detail -> socket öffnen -> connection -> daten schicken bis fertig -> schließen.
HTTP ist wie gesagt Stateless und baut keiner permanente Verbindung auf. Und ich halte weiterhin die Gesamtheit für einen Fehler im Grundansatz.
-.- -
besser noch nachschaut wie man HTTP Pipelining selbst implementiert.
Ich habe tatsächlich fast überlegt, so etwas zu tun und im Notfall muss ich das wohl. Allerdings hatte ich eigentlich nicht vor, das Rad neu zu erfinden, da ja wie gesagt, laut MSDN das HTTP-Pipelining funktioniert und das HTTP-Protokoll mehr oder minder komplett zu implementieren ist eine ziemliche Aufgabe...
HTTP ist wie gesagt Stateless und baut keiner permanente Verbindung auf.
Das mag auf HTTP 1.0 zutreffen, aber ab HTTP 1.1 wird doch keep-alive unterstützt, um die Verbindung wenigstens für eine Weile zu halten? (Will dich damit nicht kritisieren, fiel mir nur auf...)
-
[...]
Da ich es langsam aufgebe, kann ich e mir wohl leisten eine geeignete Antwort zu verfassen:
Ich hab recht klar und deutlich gesagt, was mein Problem war. Ich habe nicht nur im Titel, sondern auch im Eingangsposting ziemlich deutlich gesagt, dass ich wissen möchte, wie HTTP-Pipelining in VB.Net zu realisieren ist. Ich habe sogar noch halbwegs gelassen reagiert, als daraufhin ein Post kam, der bereits begann mit \"Ich kenn mich nicht so sehr mit dem HTTP-Protokoll aus\".
Als dann durchsickerte, dass der Gegenüber einfach keine Ahnung hatte, was ich wollte, habe ich mir überlegt ein anschauliches Beispiel zu machen, um zu erklären, was ich mit \"in richtiger Reihenfolge verarbeitet\" meine. Daraufhin erhilt ich die Antwort, dass sich dieses Beispiel doch mit MySQL und einer Bearbeitung der PHP-Datei viel einfacher hinbekäme - behalte bei der Beurteilung des Sinngehaltes dieser Antowrt bitte im Hinterkopf, dass ich im Eingangsposting bereits explizit geschildert habe, dass ich einen Client schreibe, und dass es mir darum geht, einen möglichst kleinen Zeitraum zwischen dem Senden einzelner Requests zu haben.
Ich bekomm noch eine weitere Antwort, in der zwar der erste Teil durchaus gerne interpretiert werden darf als \"da will einer nur helfen, dass ich nicht aus Vershene etwas übersehe und etwas instabiles schreibe\", dessen zweiter Teil aber vollkommen aus dem Zusammenhang gerissen ist.
Ich erkläre also nochmal, wo das Problem ist. Und erhalte als Antwort, dass ja völlig offensichtlich ist, dass man einfach nur googeln oder in der MSDN nachschauen braucht.
Das ist 1. Ein Vorwurf, ich sei zu bescheuert an Google zu denken
2. Ein Vorwurf, ich sei zu bescheuert Google zu benutzen
und 3. nicht einmal, um sienen Standpunkt überzeugend darzustellen einer der Links drinsteht, die man ja angeblich Zuhauf bei Google findet.
Nun, ich wittere nach wie vor Missverständnis und versuche klarzustellen, wieso mir all die vielen Google-Treffer und MSDN-Artikel nichts bringen.
Und jetzt sagst du mir, ich soll mal bitte meine Arroganz ablegen? Ja, ich habe um Hilfe gebeten. Mir war auch klar, dass ich ziemlich geringe Chancen habe, dass mir da einer helfen kann, damit kann ich leben.
Aber es ist schlicht unnötig, wenn schon eine solch klare Frage formuliert wurde, immer wieder Antworten zu alternativen Problemen zu geben oder mir zu saen, dass das was ich vorhabe doch total unnötig ist. Es ist notwendig, sonst hätte ich nicht gefragt. Ihr könnt gerne meinen Lösungsweg in Zweifel ziehen - und wie bereits dargelegt ist der Lösungsweg NICHT \"viele Queries in kurzer Zeit senden\", sondern der Lösungsweg ist \"Pipelining\", denn das Problem ist \"Viele Queries in kurzer Zeit senden\".
Ich bin nach wie vor bereit Lösungsvorschläge dankend anzunehmen. Aber keine Problemvorschläge, denn was das Problem ist kann ich leider nicht beeinflussen.
Zuerst möchte ich erst einmal loben, dass du wirklich sachlich auf die Vorwürfe eingegangen bist - danke.
Du solltest aber nicht vergessen, dass du hier in einem öffentlichen Forum schreibst mit einer Community, die sich mehr mit Webdesign als mit allem anderem beschäftigt.
Klar, das hattest du im Eingangspost sogar extra hervorgerufen, aber genau das will ich auch kritisieren. Es ist einfach nicht höflich, wenn man bei einer Bitte/Frage so \"von oben\" herab redet.
Weiterhin kritisiere ich die Reaktion auf denjenigen, der angeblich keine Ahnung hat.
Sei doch einfach dankbar, dass er überhaupt darüber nachdenkt, wie er dir ohne jegliche Gegenleistung helfen könnte.
Zum Vorwurf mit Google muss ich dir allerdings zustimmen. Wobei ich auch hier evil-devil in Schutz nehmen würde, weil ich mich, bei so einer Antwort deinerseits, verletzt fühlen würde und manchmal dementsprechend pampig reagieren würde.
[...]
Ich bin nach wie vor bereit Lösungsvorschläge dankend anzunehmen. Aber keine Problemvorschläge, denn was das Problem ist kann ich leider nicht beeinflussen.
Gerade weil du uns die explizite Problembeschreibung vorenthälst, ist es für uns schwierig - auf Grund von Erfahrungen - einen expliziten Lösungsvorschlag zu geben.
Deshalb versuchen wir halt dir andere Problemvorschläge zu machen.
Wenn du damit nicht umgehen kannst, dann solltest du nicht in ein solches Forum posten oder ganz einfach konkreter werden.
Ich glaube nicht, dass du die Hilfebereitschaft der Community durch deine Hinweise verändern wirst.
Entweder ordnest du dich unter und stellst dementsprechend deine Fragen, oder du fragst wo anders nach. -
Gerade weil du uns die explizite Problembeschreibung vorenthälst, ist es für uns schwierig - auf Grund von Erfahrungen - einen expliziten Lösungsvorschlag zu geben.
Das Problem ist aber halt, das schnelle abschicken der Requests. Es führt daran kein Weg vorbei.
Der zugehörige Server ist mir nun einmal leider nicht zugänglich und der einzige Weg, mit ihm zu kommunizieren sind eben HTTP-Queries, sonst würde ich das natürlich auch ganz anders lösen, denn dieser Weg ist schlicht und ergreifend gegeüber Alternativen langsamer und unsauberer, das ist mir bewusst, ich kann es aber nicht ändern. Und es muss nun einmal schnell gehen, sonst kann ich mir die Arbeit auch sparen. Ich könnte das jetzt noch so detailreich und farbenfroh beschreiben, aber ihr würdet zu keinem anderen Schluss kommen.
Aber wie gesagt, ich hab auch nicht unbedingt erwartet, dass das posten hier weiterhilft, aber ab und an hat man halt Glück und trifft auf jemanden, der sowas schon einmal gemacht hat und gleich sagt \"jupp, so, hier Source und ab dafür\" ;) Long shot, aber Wunder gibt es immer wieder...
werde also wohl in letzter Konsequenz gezwungen sein, einen echten HTTP-Client zu implementieren oder per Multithreading zu arbeiten, was eigentlich auch zu grpße Geschwindigkeitseinbusssen hat und nicht stabil genug ist... mist... -
Ah...
@Problem: Naja, den Response bekommst du auf jeden Fall,egal wie kurz oder lang das ganze war. Das liegt aber in der Natur von TCP/IP. Denn der Handshake erfolgt immer. Was du hier suchst wäre UDP und mit PHP nicht realisierbar. Zumal man allgemein für diese Art von Logik auf eine Server/Client Architektur setzt die direkt miteinander kommunizieren kann. Das ist bei Client/PHP nicht gegeben, da HTTP eine Stateless Protokoll ist. Es ist wird nie gewährleistet das deine Anfrage wirklich angekommen ist, du musst vor dem Absenden deiner neuen Anfrage schon wissen ob die letzte Anfrage erfolgreich war und dafür benötigst du den Request den du zurückerhälst. Für mich ist das ein grundlegender Logikfehler.
mhn aber:
TCP/IP arbeitet doch mit einem Sliding Window Algorithmus
soll heissen, Sender schickt mehrere Segmente nacheinander und anhand er eingehenden Bestätigungen sieht er dann was ankam...bleibt eine Bestätigung aus wird ab letzten Bestätigung nochmal das senden wiederholt
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage