in reply to how to control segmented messages in TCP chat client
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.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: how to control segmented messages in TCP chat client
by thanos1983 (Parson) on Aug 25, 2014 at 14:25 UTC | |
by flexvault (Monsignor) on Aug 25, 2014 at 17:11 UTC | |
by thanos1983 (Parson) on Aug 26, 2014 at 09:48 UTC | |
by flexvault (Monsignor) on Aug 26, 2014 at 14:09 UTC |