RE:Asignacion de InputStream a Socket
No se trata de asignar, debes tomar el InputStream del socket con el metodo getInputStream() y asignarselo a un atributo DataInputStream. de ahi en adelante lo que tomes con este, sera lo que recibas del socket. por ejemplo
teniendo un socket que se llame "socket"
DataInputStream buffer = new DataInputStream(socket.getInputStream());
y ya depende del tipo de dato que vayas a recibir:
buffer.readInt()
buffer.readUTF()
o si recibes un array de byte
byte[] recibido = new byte[256]; //tamaño a recibir
buffer.read(recibido);
String rec = new String(recibido);
exitos