Difference between revisions of "TWSocket.LineMode"
		
		
		
		
		
		
		Jump to navigation
		Jump to search
		
				
		
		
		
		
		
		
		
	
| Markus.humm (talk | contribs) | |||
| (2 intermediate revisions by 2 users not shown) | |||
| Line 11: | Line 11: | ||
| == Example == | == Example == | ||
| − | If the client always sends data lines  | + | If the client always sends data lines terminated with CR/LF and the server shall display the lines individually in a memo, the server would set LineMode to true so the caller always receives complete lines without needing to search for the end of line. | 
| + | <syntaxhighlight lang="delphi"> | ||
|    Socket.LineLimit:=100;             // prevent denial of service or buffer   |    Socket.LineLimit:=100;             // prevent denial of service or buffer   | ||
|                                       // overflows |                                       // overflows | ||
| − |    Socket.LineEnd  | + |    Socket.LineEnd:=chr(10) + chr(13); // the sender has to terminate all   | 
|                                       // messages sent with this character   |                                       // messages sent with this character   | ||
|                                       // 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. | ||
Latest revision as of 00:49, 10 March 2016
Main page -> ICS component reference -> TWSocket -> LineMode
Definition
property LineMode: boolean;
Description
If set to true, LineMode enables automatic splitting of received data into packets based on a user definable char sequence.
Example
If the client always sends data lines terminated with CR/LF and the server shall display the lines individually in a memo, the server would set LineMode to true so the caller always receives complete lines without needing to search for the end of line.
<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
Always set LineLimit to prevent buffer overflows.
