On Thursday 2008.08.14, at 05:04 , Marc Larue wrote:
[...]
I think guaranteed delivery is what TCP was designed for
Everybody should really read W. Richard Stevens' books on TCP/IP that
I mentioned (and the various standards documents).
TCP does *not* guarantee delivery -- it makes a best effort. TCP uses
e.g., the ACKs to notify the sender that everything up to a certain
position in the stream has been received. That's "transactional" but
there can be a whole lot of data in-flight that can get dropped.
TCP does guarantee ordering of the stream of bytes that are received
but that's also a very different thing.
and HTTP/1.1 reuses the TCP socket.
The HTTP/1.1 protocol supports keepalives but there are practical
details in the implementations and configs that may or may not give
you the behavior that you think you're getting from that.
You do not need to write something to a TCP socket
to see if it is writeable, the socket throws an exception if it
closes or
becomes unwriteable. You will "know if a client disconnected" in
real-time.
False. The states of a socket connection are more complex than that.
Alas, all too many people believe similar nonsense and so we (users)
end up getting stuck with software that breaks in odd ways for no good
reason.
Take care,
John