No se puede leer el número enviado con DataOutputStream

este es mi codigo de cliente

Random rand = new Random();
int  n = rand.nextInt(50) + 1;
DataInputStream dis = new DataInputStream(_socket.getInputStream());
DataOutputStream dos = new DataOutputStream(_socket.getOutputStream());
dos.writeInt(n);

y este es el código del servidor

try {
     DataInputStream dis = new DataInputStream(socket.getInputStream());
     BufferedReader input = new BufferedReader(new InputStreamReader(dis));  
     int fromClient = input.read();
     System.out.println(fromClient);
} catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
}

Pero no recibo nada de fromClient, incluso si lo cambio de esta manera

System.out.println(fromClient+"test");

no tengo resultado

Respuestas a la pregunta(2)

Su respuesta a la pregunta