El siguiente ejemplo muestra cómo usar el protocolo UDP para una comunicación cliente/servidor:
Servidor:
public static void main(String[] args) {
try {
System.out.println("server creado........");
// 1. crear el servidor..
DatagramSocket socket = new DatagramSocket(45000);
// 2. recibir mensaje desde el cliente...
// 2.1 crear el paquete donde se recibe el mensaje.
byte[] buffer = new byte[1024];
DatagramPacket paqueteCliente = new DatagramPacket(buffer, 1024);
// 2.2 recibir el paquete. operacion bloqueante.
System.out.println("socket esperando....");
socket.receive(paqueteCliente);
// 2.3 leer el paquete como string...
String msj = new String(paqueteCliente.getData());
System.out.println("desde "
+ paqueteCliente.getAddress().getHostAddress()
+ " desde el puerto " + paqueteCliente.getPort()
+ " se recibio:" + msj);
// 3. enviar respuesta..
String resp = new Date().toString();// la hora como respuesta.
// 3.1 crear datagrama de envio.
// direccion destino..
InetAddress addr = paqueteCliente.getAddress();// la misma del
// cliente.
int port = paqueteCliente.getPort();
// el datagrama contiene la información del destino.
DatagramPacket paqueteEnvio = new DatagramPacket(resp.getBytes(),
resp.length(), addr, port);
System.out.println("enviando:"+new String(paqueteEnvio.getData()));
// 3.2 enviar paquete...
socket.send(paqueteEnvio);
//4. cerrar el socket...
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Cliente:
public static void main(String[] args) {
try {
// 1. crear el socket por donde se enviara la peticion y se recibira
// la respuesta..
DatagramSocket socket = new DatagramSocket(32000);
// 2. crear datagrama para enviar la info. el datagrama contiene
// toda la info necesaria para que llegue el msj
String msj = "Hola Server....."; // msj a enviar.
String ip = "127.0.0.1";
int port = 45000;
// 2.1 crear datagrama
DatagramPacket paqueteEnvio = new DatagramPacket(msj.getBytes(),
msj.length(), InetAddress.getByName(ip), port);
// 2.2 enviar paquete.
socket.send(paqueteEnvio);
// 3. recibir respuesta...
// 3.1 crear datagrama de recepcion.
byte[] resp = new byte[1024];
DatagramPacket paqueteRecibido = new DatagramPacket(resp,
resp.length);
// 3.2 recibir paquete.
socket.receive(paqueteRecibido);
// 4. mostrar info...
System.out.println("Server respondio desde "
+ paqueteRecibido.getAddress().getHostAddress()
+ " por el puerto " + paqueteRecibido.getPort()
+ " se recibio:" + new String(paqueteRecibido.getData()));
// 5. cerrar
socket.close();
} catch (IOException e) {
e.printStackTrace();
}



No hay comentarios:
Publicar un comentario