Accessing DataSocket Server with Python
Grant Edwards
invalid at invalid.invalid
Fri May 29 12:59:47 EDT 2015
On 2015-05-29, Chris Angelico <rosuav at gmail.com> wrote:
> On Sat, May 30, 2015 at 2:29 AM, Grant Edwards <invalid at invalid.invalid> wrote:
>
>> If you assume TCP read/write operations are atomic and "message"
>> boundaries are preserved, your code is wrong. It will eventually
>> fail. Period.
>
> Indeed. That said, though, if your writes are all smaller than one
> packet, and you perfectly alternate a write and a read, a write and a
> read, at both ends, then you can go a very long way without ever
> running into this.
That's true. You probably won't see a failure until you do something
like run through some sort of WAN connection (satellite and PPP links
are excellent for exposing bad network code), or somebody configures a
switch, router, or IP interface in a goofy (but entire valid) way, or
somebody changes the app such that it writes more than 1500 bytes, or
it violates the strict alternation of reads/writes.
But someday, somehow, (IME) one of those always happens. And whoever
has to fix it will wish bad things upon you and your descendants.
I've lost count of the times I've had to fix somebody else's code that
broke because they assumed TCP was a datagram service rather than a
byte-stream service.
--
Grant Edwards grant.b.edwards Yow! UH-OH!! I put on
at "GREAT HEAD-ON TRAIN
gmail.com COLLISIONS of the 50's"
by mistake!!!
More information about the Python-list
mailing list