On Mon, Sep 21, 2015 at 11:55 AM, Cameron Simpson <c...@zip.com.au> wrote: > On 21Sep2015 10:34, Chris Angelico <ros...@gmail.com> wrote: >> >> If you're going to add sequencing and acknowledgements to UDP, >> wouldn't it be easier to use TCP and simply prefix every message with >> a two-byte length? > > > Frankly, often yes. That's what I do. (different length encoding, but > otherwise...)
Out of interest, what encoding? With most protocols, I would prefer to encode in ASCII digits terminated by end-of-line, but for arbitrary content you're packaging up, it's usually easier to read 2 bytes (or 4 or whatever you want to specify), then read that many bytes, and that's your content. No buffering required - you'll never read past the end of a packet. > UDP's neat if you do not care if a packet fails to arrive and if you can > guarentee that your data fits in a packet in the face of different MTUs. > I like TCP myself, most of the time. Another nice thing about TCP is that > wil a little effort you get to pack multiple data packets (or partial data > packets) into a network packet, etc. Emphatically - a little effort sometimes, and other times no effort at all! If you write a packet of data, then write another one, and another, and another, and another, without waiting for responses, Nagling should combine them automatically. And even if they're not deliberately queued by Nagle's Algorithm, packets can get combined for other reasons. So, yeah! Definitely can help a lot with packet counts on small writes. ChrisA -- https://mail.python.org/mailman/listinfo/python-list