On the sending side, you're using a PrintWriter to write to the output stream.
On the receiving side, you're using an ObjectInputStream to read.
These two I/O classes don't go together. An ObjectInputStream expects data in a specific binary format. A PrintWriter writes text. Either use an ObjectOutputStream on the sending side, or use a Reader on the reading side and parse the data appropriately.
Java has two kinds of I/O classes. Streams are for reading and writing binary data (bytes). Readers and Writers are for reading and writing text (characters), which are converted from and to bytes using a character encoding.