Sprachen Wechsler

03/12/2014 17:18 YatoDev#16
Quote:
Originally Posted by lolkop View Post
das liegt darann, das du immer neue anfragen startest, anstatt alles aus einer abzulesen.

letztendlich sollte man das ganze aber immer über post anfragen lösen, da der content dort beliebig lang sein kann. get requests sind aufgrund der url begrenzung stark beschränkt.

schau dir das ergebnis einer mehrzeiligen anfrage bei google doch mal genau an. letzlich brauchst du das ergebnis dann nur nach deinen wünschen zu parsen.

btw deine tcp anfrage wird nach aktuellem code nur selten funktionieren, da du nicht prüfst, ob die antwort vollständig ist, sondern nur ob eine antwort vorliegt.
der tcp stack baut sich je nach verfügbarer banddbreite sehr schnell, oder aber auch sehr langsam auf. es sollte deshalb überprüft werden, ob die rückgabe vollständig ist, bevor sie bearbeitet wird.

die geschwindigkeit ist am ende übrigens egal, da ohnehin alles im hintergrund abläuft.
1.) i know

2.) Meinst du das der user keinen x beliebig langen text senden kann weil die url nicht zu lang sein darf ?

3.)Mach ich wenn ich nochmal lusst habe

4.) Es kommt immer alles an von google hatte noch nie einen fehler und hab das bis jetzt immer so bei TCP gemacht. Wie soll ich die auf vollständigkeit prüfen ? (TCP wartet doch immer bis alles gesendet/empfangen wurde oder nicht? )

Hab meine posts übrigens geöscht da in denen nichts sinnvolles mehr stand da der code sich zu oft ändert. möchte den thread ja auch nicht zuspammen.
03/12/2014 17:39 lolkop#17
Quote:
Originally Posted by »FlutterShy™ View Post
1.) i know

2.) Meinst du das der user keinen x beliebig langen text senden kann weil die url nicht zu lang sein darf ?

3.)Mach ich wenn ich nochmal lusst habe

4.) Es kommt immer alles an von google hatte noch nie einen fehler und hab das bis jetzt immer so bei TCP gemacht. Wie soll ich die auf vollständigkeit prüfen ? (TCP wartet doch immer bis alles gesendet/empfangen wurde oder nicht? )

Hab meine posts übrigens geöscht da in denen nichts sinnvolles mehr stand da der code sich zu oft ändert. möchte den thread ja auch nicht zuspammen.
TCP ist ein protokoll...

du legst einen socket an. über diesen kannst du anfragen senden, und bereits erhaltene bytes abrufen.

wichtig ist hierbei das das ganze nach dem stack-prinziep funktioniert.
dh abgerufene bytes, werden vom stack gepopt und sind entsprechend weg.
die anzahl der abzurufenden bytes kannst du bei tcprecv festlegen.

wichtig ist hierbei das es unerheblich ist, wieviele bytes der stack bereits beinhaltet. die anfrage löscht in jedem fall den aktuellen inhalt des stacks und gibt ihn aus...

beispiel:
der server schickt dir folgenden text:
Code:
abcdefghijklmnopqrstuvwxyz
angenommen deine leitung kann pro ms 1 zeichen übertragen.
fragst du jetzt nach einer ms den stack mit tcprecv ab, so sieht das ergebnis so aus:
Code:
a
der stack wird dann zurückgesetzt
fragst du 3ms später den stack erneut ab, so sieht das ergebnis so aus:
Code:
bcd
der stack wird wieder geleert und so weiter.

deshalb ist es wichtig das man sich einen buffer, in form einer variable anlegt, welcher solange neuen kontent speichert, bis das ergebnis komplett ist.

html hat die eigenschaft, das am ende eines jeden paketes \r\n\r\n (2x @CRLF) steht. somit kannst du prüfen ob das ergebnis komplett ist.

googles antwort beinhaltet vor den 2 absätzen noch eine 0, sodass das ende noch eindeutiger ist.

Edit:
genau genommen handelt es sich hier also nicht um einen stack, sondern ein queue system. abgearbeitet wird schließlich nach den FIFO system.