Difference between revisions of "TWSocket.LineEnd"

From Overbyte
Jump to navigation Jump to search
(first entry)
 
 
(One intermediate revision by the same user not shown)
Line 13: Line 13:
 
If the client always sends data lines which end on CR/LF and the server shall display the lines individually in a memo, the server would set LineMode to true so that he always receives whole lines without needing to look for the end of a line himself.
 
If the client always sends data lines which end on CR/LF and the server shall display the lines individually in a memo, the server would set LineMode to true so that he always receives whole lines without needing to look for the end of a line himself.
  
 +
<syntaxhighlight lang="delphi">
 
   Socket.LineLimit:=100;            // prevent denial of service or buffer  
 
   Socket.LineLimit:=100;            // prevent denial of service or buffer  
 
                                     // overflows
 
                                     // overflows
Line 19: Line 20:
 
                                     // combination
 
                                     // combination
 
   Socket.LineMode:=true;
 
   Socket.LineMode:=true;
 +
</syntaxhighlight>
  
 
In [[TWSocket.OnDataAvailable|OnDataAvailable]] ReceiveStr is used to fetch the available data packet by packet.
 
In [[TWSocket.OnDataAvailable|OnDataAvailable]] ReceiveStr is used to fetch the available data packet by packet.
  
 
== Best practices ==
 
== Best practices ==
 +
* Use a sequence as terminator which can never occur in your data
 +
* A longer sequence makes occurrence in your data less likely
  
 
== How to ==
 
== How to ==

Latest revision as of 20:32, 1 July 2010

Main page -> ICS component reference -> TWSocket -> LineEnd

Definition

property LineMode: String;

Description

LineEnd specifies the delimiter sequence used to detect the end of a message. The sender must append this sequence to all packets he sends, otherwise the receiver will get garbage since several packets will be received as one.

Example

If the client always sends data lines which end on CR/LF and the server shall display the lines individually in a memo, the server would set LineMode to true so that he always receives whole lines without needing to look for the end of a line himself.

<syntaxhighlight lang="delphi">

 Socket.LineLimit:=100;             // prevent denial of service or buffer 
                                    // overflows
 Socket.LineEnd  :=chr(10)+chr(13); // the sender has to terminate all 
                                    // messages sent with this character 
                                    // combination
 Socket.LineMode:=true;

</syntaxhighlight>

In OnDataAvailable ReceiveStr is used to fetch the available data packet by packet.

Best practices

  • Use a sequence as terminator which can never occur in your data
  • A longer sequence makes occurrence in your data less likely

How to