OutputStream вашего сервера - это PrintStream, а InputStream вашего клиента - это DataInputStream. Попробуйте изменить сервер для использования DataOutputStream , как ваш клиент.
Еще лучше, возможно, изменить оба на использование PrintWriter и BufferedReader, как пример пары клиент / сервер в Обучающее руководство по Socket .
<Ч />
Просто чтобы немного объяснить , почему ваш код не работал: вы можете рассматривать объекты Stream как фильтры, через которые проходят ваши данные. Фильтр изменяет ваши данные, форматируя их так, чтобы фильтр , соответствующий на другом конце, мог их понять. Когда вы отправляете данные через один тип OutputStream, вы должны получить их на другом конце с соответствующим InputStream.
Так же, как вы не можете хранить объект String в double или double в String (не преобразовывая его), вы не можете отправить данные из одного типа OutputStream (в данном случае PrintStream) другой тип InputStream.