I don't know if my post will be helpful but at least it won't be less constructive than your bump.
I don't have much experience with using socket, I just use it for product activation and very small info transfer which go very quickly and I use script by Kris which I posted a link to on a thread by your dad? which you bumped
But as far as I gather you would only put in a count if you want to read a specific number of bytes as in the case of Kris's script, If you want to read everything you can then including a count is only going to be detrimental. I would think that if you tell the socket to read more bytes than exist then it's going to take it's time about it.
It probably actually finishes the reading quickly with the read(999999) method but is just looking for more to read and eventually stops with a time out.
You could set the timeout to 1 (second) instead of the default 10 seconds and see if that cuts off from your 19 seconds.
Either way I cant see what you have to gain by setting the socket to (99999) or the likes unless you want to limit the byte size of what you are reading (In the rare case where your address contains several Gigabytes ). The fact that you see people using the count is pretty meaningless, they prob got it from some bloke in a manual who got it from some other bloke from his manual who either had a good reason why he used it in his particular case or didn't.
It is not difficult to find bad practices in print and on the web, my posting here might or might not be one.
Please post feedback of the result of changing the timeout. Even on the side that it doesn't cut the time it still make sense to me that it should take longer to look for the non-existing bytes but I would like to know anyway,