Die Procedure von oben ist schon etwas älter und überholt
hatte nich wieder rübergeguckt.
Hab mir jetzt mal eine andere überlegt und zwar werden als erste paar zeichen die Länge des Strings geschickt usw guckt selber
Delphi-Quellcode:
procedure TForm1.send(s_text:string);
var
s_length:string;
i_length:integer;
begin
i_length:=length(s_text);
if i_length<10 then
begin
s_length:='000'+inttostr(i_length);
end
else if i_length<100 then
begin
s_length:='00'+inttostr(i_length);
end
else if i_length<100 then
begin
s_length:='0'+inttostr(i_length);
end
else
begin
s_length:=inttostr(i_length);
end;
cs.Socket.SendText(s_length+s_text);
end;
procedure TForm1.ssClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
s_receive,s_length,s_command:string;
i_length:integer;
begin
if length(s_buff)+socket.ReceiveLength>=4 then
begin
s_receive:=s_buff+socket.ReceiveText;
s_length:=s_Receive;
setlength(s_length,4);
i_length:=strtoint(s_length);
if length(s_receive)-4>=i_length then
begin
s_receive:=copy(s_receive,4+1,length(s_receive));
s_command:=s_receive;
setlength(s_command,i_length);
s_buff:=copy(s_receive,i_length+1,length(s_receive));
//und dann halt auswerten
end
else
begin
s_buff:=s_receive;
end;
end
else
begin
s_buff:=s_buff+socket.ReceiveText;
end;
end;
jetzt wollte ich fragen ob es zu Komplikationen kommen kann?
wenn z.B. der Server ein falschen Start String bekommt wie finde ich dann den nächsten anfang?