TCP Server, unbekannte Stringlänge
lima-city → Forum → Programmiersprachen → Delphi & Pascal
beispiel
byte
connection
daten
eingabe
eleganter gehen
folgende daten
funktion
gut program
guter alter
integer speichern
methode
paket
programmierer
protokoll
sen
spuren
test
tradition
variant
-
also ich hab im moment keinen delphi compiler da, aber in PASCAL(is ja bekanntlich mit Delphi verwand), klappt das ganz gut
program strng;
var s:string;
var x:integer;
begin
s:='12345678901234567890123456789012abcdefghijabcdefghijabcdefghijabHallo, test';
x:= 65 ;
repeat
write( s[x] );
x:=x+1
until(x > Length(s));
readln;
end.
zur Erl?uterung: s ist der empfangene String. 1234.... bzw, abcd..., sind die 32 byte hashes und hallo, test ist der string, den der user oder was auch immer gesendet hat. Klappt allesdings nur, wenn danach nixhts mehr kommt
alternativ k?nnte man nach guter alter c tradition den string mit nem nul byte abschlie?en(/NUL) 0x0 glaub ich. ob das das tcp/ip transportiert, und ob der delphi kompiler das richtig erkennt ist ne andere frage
EDIT:
kleiner nachtrag: nat?rlich nicht mit write ausgeben, sondern an nen anderen string dranh?ngen, und diesen dann auswerten
Beitrag ge?ndert am 26.08.2005 14:00 von disod -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
dann t?t ich mich mal daran machen, den TCP header auszulesen, da m?sste die l?nge drinstehen. Soweit ich wei?, gibst zumindest bei VB ne funktion im winsock die l?nge auszulesen, bei delfi m?sstes ?ber die api gehen.
L?sung2:
du definierst ne endzeichen/String. denn ?bertr?gste den kram base64codiert und fertisch -
also mit VB und dem Winsock steuerelement ist das kein problem, da schaut das ganze so aus:
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
End Sub
da kann man dann mit bytestotal die l?nge auslesen -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage