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.
Dovrebbe restituire i byte ma non lo fa

A cosa ti serve chiamare un available() su un ObjectInputStream?
Vorrei gestire una progress bar...

E' chiaro che se al momento della prima chiamata ad available() non è ancora stato inviato nulla sul socket (e il client o server che deve ricevere non può sapere con precisione quando i dati gli saranno inviati) il metodo tornerà 0, perchè 0 sono i byte che possono essere letti senza bloccarsi = nessun byte può essere letto senza bloccarsi...
Ho effettivamente inviato l'oggetto. Infatti se chiamo la readObject mi restituisce l'Object. Ma se chiamo available() prima della readObject() mi restituisce 0 comunque..