The BEEP protocol uses it, and Marshall Rose says it is the most efficient method. See RFC3117: On the Design of Application Protocols (a good read).
Bernstein uses strings preceded by an delimited decimal length string in netstrings.
Note that there are really several issues here which can be handled together or separately. First is the reader knowing how much data to expect in the next "chunk". Second, delimiting logical strings within a transaction. Third, knowing whose turn it is to talk. In your example, it appears issues one and two are combined, and the third issue is just handled by the client and server programs just knowing (e.g.) how many strings to accept. For simple protocols that's okay, but it's better to have some general method to indicate line turnaround (e.g. SMTP/POP error messages continue with a "-" as the fourth character in a line to indicate that there's more to come, and use a "." on a line by itself to indicate the end of a message.
In reply to Re: Choosing a client/server protocol
by Thelonius
in thread Choosing a client/server protocol
by Coruscate
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |