You are right Michael.
If Simon's protocol is a character oriented protocol, he may use the "LineMode" 
feature of TWSocket to assemble received data in line and trigger 
OnDataAvailable event only for each complete line.

-- 
francois.pie...@overbyte.be
Embarcadero MVP
http://www.overbyte.be
http://francois-piette.blogspot.com




-----Message d'origine-----
De : TWSocket [mailto:twsocket-boun...@lists.elists.org] De la part de Michael 
Gasser (privat)
Envoyé : samedi 6 décembre 2014 13:35
À : ICS support mailing
Objet : Re: [twsocket] Sending font styles and colors over network

,

Hi Simon

did you read François Piettes posting, mainly the part about large "fragmented 
packets"?

F.e. :
- If a client sends a large packet A to your server, your client may receive it 
(in your proc SocketServerDataAvailable) in several "small" 
packets.
- If a client machine sends several packages at once the data may arrive in 
several small packets. Example: C sends ABCDEF - the server may receive the 
data in four pieces: A1 (part 1 of A), then A2, then A3BCD1, then D2EF.

*You must implement an "incoming data buffer" for each connection (*Maybe you 
did... (?)), and then pass this buffered data to your parser.

Regards
Michael


Am 06.12.2014 12:18, schrieb Simon Lewis:
> Thanks for the Information am using TCP with  custom process here code
>
> procedure TLobbyServer.SocketServerDataAvailable(Sender: TObject;
> ErrCode: Word);
> begin
>   if ErrCode <> 0 then Exit;
>  with Sender as TWSocketClient do
>  begin
>    RunCommand(ReceiveStr, Sender as TWSocketClient);  end; end;
>
> procedure TLobbyServer.RunCommand(comdata: string; rSocket: 
> TWSocketClient);
> var
>  command: string;
> begin
>  { INCOMING ENCODED DATA STRING }
>  comdata := DecodeStr(comdata);
>  { DECODE INCOMING DATA STRING }
>  while DecodeCommand(comdata, command, dat) do begin
>    case StrToIntDef(command, -1) of
>      00: begin
>           LobbyChatMsgs(dat[0], dat[1], dat[2], dat[3], 
> StrToInt(dat[4]), StrToInt(dat[5]), 
> TFontStyles(Byte(StrToInt(dat[6]))), rSocket);
>         end;
>    end;
> end;
>
> procedure TLobbyServer.LobbyChatMsgs(const LobbyID: String; const
> UserName: String; const Msg: String; const FontName: String;
> FontColor: TColor; FontSize: Integer; const FontStyle: TFontStyles;
> rSocket: TWSocketClient);
> begin
>  if Trim(UserName) = '' then
>  begin
>    Exit;
>   end else begin
>    SendLobbyCommand(LobbyID, 'š04œ'
>        + LobbyID + 'œ'
>        + UserName + 'œ'
>        + Msg + 'œ'
>        + FontName + 'œ'
>        + IntToStr(FontColor) + 'œ'
>        + IntToStr(FontSize) + 'œ'
>        + FontStyletoStr(FontStyle) + 'œ');
>    end;
> end;
>
> any way to improve it?, I know it be hard reading code with no having 
> all the correct codes so on also would you be able to supple me with a 
> simple image stream demo for video I been looking all over for one and 
> Never found it I would like to add video to my app one day ha.
>
> -----Original Message----- From: Simon Lewis
> Sent: Friday, December 05, 2014 6:53 PM
> To: TWSocket Archives
> Subject: Sending font styles and colors over network
>
> I know am flooding this news group with pointless questions but I 
> really need to know, am building a chat system and I want to send 
> basic text chat with font size/font color/font styles for each user am 
> doing this via strings and sending to server and back to client but I 
> noticed after a while and when more then a few users are typing the 
> text chat becomes unstable and incorrect font styles / colors and 
> sizes happen and only way to fix it is to re-login so am wondering 
> what would be best way to send the information over network so it 
> would be stable and reliable.
>
> Thanks

--
To unsubscribe or change your settings for TWSocket mailing list please goto 
http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

-- 
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

Reply via email to