Q:

Fechar o DataInputStream sempre fecha o InputStream?

Eu preciso usar temporariamente um  DataInputStream com um inputStream de um socket. 
Eu preciso usar close no DataInputStream?
E se eu usar eu estaria fechando o inputStream do socket também ? 

A:

Se você fechar o DataInputStream, ele vai fechar a stream que você passou no seu construtor (no seu caso, a inputStream do socket).
Da documentação de DataInputStream, na seção métodos herdados da classe FilterInputStream tem o link pro método close. Clicando nele a descrição fala que ele chama o close na inner stream ("This method simply performs in.close().").

