Il metodo 'available' invocato su un oggetto di tipo InputStream ritorna SEMPRE 0.

Come le API indicano chiaramente:

Quote Originariamente inviata da API

...
The available method for class InputStream always returns 0.

This method should be overridden by subclasses.
Invocandolo, invece, su un oggetto di tipo EFFETTIVO ObjectInputStream, il metodo 'available' dovrebbe restituire il numero di bytes che possono essere effettivamente letti dallo stream mediante una operazione di read.