in reply to How to make EOF?

You are probably thinking of the EOF returned by some C functions, which is indeed -1, but that is used in a different way. Even socket programs written in C would not use that. Windows uses a Control-Z character as an EOF marker in text files, but that causes all sorts of problems - don't go there.

I always prefix my socket data blocks with a fixed length red-tape block at the front. This can consist of a sanity check (to make sure we know this is the start of a new block), a request code (you might not need, but could also be an error code) and the length of the data block which follows.