TCP is a stream-oriented protocol. Message boundaries are lost and fragmentation may occur at any time. It is useful to frame your data, ie establish a protocol layer on top of TCP.
A simple way to accomplish this is by prefixing your messages with their length: my $pkt = pack "n/a", $str; but line-based protocols are also common. Using readline could be tricky, though.
In any case, you'll want to buffer the stream. When a message is complete, rip it/them out of the buffer (unpack or split) and fire the message handler. Callback-driven logic will help you arrive at a clean, modular solution.
In reply to Re: how to control segmented messages in TCP chat client
by Anonymous Monk
in thread how to control segmented messages in TCP chat client
by thanos1983
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |