Einzelnen Beitrag anzeigen

gandime
(Gast)

n/a Beiträge
 
#13

Re: ClientSocket steam verschicken mit vorherigen Zeichen

  Alt 27. Jan 2008, 13:51
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?
  Mit Zitat antworten Zitat