yo soy nuevo en esto, pero lo que hace java.net es aprovechar las clases de java.io
PrintWriter y BufferedStream (como envolotorios de los flujos).
Mirate la manera de escribir en ficheros antes de ir a java.net, asi lo entenderas mejor.
(yo lo mire hace tiempo, se me olvido casi todo ya)
Los flujos son socket.getOutputStream y serverSocket.getInputStream, aunque yo de
esto aun no se mucho.
Para comunicacion UDP o URL no te puedo decir, pq aun no la he mirado.