Ad 1) schon mal mit der Methode isConnected() der Klasse Socket versucht?
Mit den beiden Methoden getOutputStream() und getInputStream() bekommst du einen Input- bzw Output Stream. Direkte Subklassen von denen ist ObjectInputStream bzw. ObjektOutputStream mittels denen du Objekte serialisieren kannst solange sie das Interface Serializable implementieren. Und damit kannst du Objekte über Sockets verschicken.
Siehe dazu auch:
http://java.sun.com/docs/books/tutor...ngWriting.html
bzw. das ganze Tutorial über Sockets:
http://java.sun.com/docs/books/tutor...ets/index.html