En esta primera parte de programación en red con Java, solo se mostraran las clases que conforman el paquete java.net que es el que nos brinda java para programar en la red (Network Socket Programming), mi intención es hablar más adelante sobre RMI y CORBA que son utilizados muy profundamente en J2EE, ya que a veces he visto casos en el trabajo que el servidor produce errores que solo podrían ser identificados por alguien que conoce estos elementos.
Clases del paquete java.net:
DatagramPaket: Representa el paquete de objetos del datagrama, que es el que contiene los datos junto con la información, como la dirección, la dirección de destino, código y numero del puerto de destino.
Esta información es usada para transferir un paquete de datagramas desde una computadora hasta otra por medio de la red.
DatagramSocket: Representa un objeto datagrama que puede enviar y recibir paquetes de datagrama. Los paquetes son enviados por un objeto DatagramSocket para que puedan ser recibidos a donde se envían.
MulticastSocket: Crea un objeto multicast datagram socket que es usado para enviar y recibir paquetes de datagrama a grupos. La dirección de ip de clase D (Que son las dirección entre 224.0.0.0 y 239.255.255.255) son usadas para crear los grupos. Cuando el mensaje es usado a una dirección IP de clase D, todos los clientes conectados al grupo reciben el mensaje. Esta clase contiene los métodos joinGroup() y LeaveGroup() para habilitar a los clientes a entrar a un grupo especifico.
InetAddress: Crea un objeto que contiene información tal como la dirección IP y el host name.
ServerSocket: Habilita para crear en el servidor un objeto de tipo socket que escucha las peticiones del cliente, El objeto ServerSocket usa el numero de puerto para recibir las peticiones del cliente.
Socket: Habilita para crear un objeto socket en el cliente que se conecte con un ServerSocket que envié peticiones al servidor.
URL: Representa el objeto donde se puede localizar una fila o recurso presente en la internet.
El paquete java.net también nos ayuda en las excepciones en la red, para controlaras en tiempo de ejecución, a continuación se describen:
BindException: Esta excepción es lanzada cuando un error ocurre mientras intentamos enlazarnos un socket a una dirección o puerto local.
Por ejemplo cuando la dirección local no puede ser accedida o el puerto requerido esta en uso.
ConnectException: Esta excepción es lanzada cuando no nos podemos conectar remotamente a una dirección ip o puerto.
MalformedURLException: Esta excepción es lanzada cuando la URL contiene un protocolo inválido o si la URL no puede ser convertida exitosamente.
UnknownHostException: Esta excepción es lanzada cuando la dirección IP o el host de la computadora no puede ser determinada, o la IP no existe.
fuente: El Libro De Network And Distributed Programming in Java y de la página oficial de Sun.



hola quisiera saber como puedo enviar un objeto serializable por un socket multicast en java
Interesante tu pregunta, en estos momentos estoy ido de tu pregunta… pero es por medio de datagramas.
Implementas del objeto serializable y luego ese buffer lo pasas por medio de datagramas. o me equivoco?