Я бы действительно рекомендовал не использовать библиотеку Java Sockets напрямую.Я нашел Netty (из JBoss) очень простым в реализации и действительно мощным.Класс Netty ChannelBuffer поставляется с целым рядом опций для записи различных типов данных и, конечно, для того, чтобы вы могли записывать свои собственные кодеры и декодеры для записи POJO в поток, если хотите.
Эта страница действительно хороший стартер- Я смог сделать довольно сложный клиент / сервер с пользовательскими кодировщиками и декодерами менее чем за 30 минут, прочитав это: http://docs.jboss.org/netty/3.2/guide/html/start.html.
Если вы действительно хотите использовать сокеты Java.Выходной поток сокета может быть заключен в DataOutputStream, который также позволяет записывать много разных типов данных, например:
new DataOutputStream(socket.getOutputStream()).writeInt(5);
Надеюсь, это полезно.