Tema: Socket's
Pregunta: Como hagouna conexion UDP ??
Respuesta: Una conexion UDP es para establecer una comunicacion, no es necesario establecer una conexion entre las dos maquinas para enviar el mensage, la maquina puede enviar el mensage y no se serciora de que halla llegado, solo lo envia a una IP especificada y si esa IP estaba escuchando el puerto, entonces llegara correctamente el mensage, sino el paquete se perdera, el siguiente ejemplo es un Chat en modo consola:
Código PHP:
/*
* Author: Crysfel Villa
* Created: Friday, April 22, 2005 9:40:46 AM
* Modified: Friday, April 22, 2005 9:40:46 AM
*/
import java.net.DatagramSocket;
import java.net.DatagramPacket;
import java.net.InetSocketAddress;
import java.net.InetAddress;
public class Chat extends Thread
{
static DatagramSocket ds=null;
static InetAddress ia=null;
static int puerto = 1020;
static String maxCadena = null;
static String usuario;
static void conectar()
{
try
{
InetSocketAddress isa=new InetSocketAddress("123.14.254.124",puerto);
ia = isa.getAddress();
ds = new DatagramSocket(puerto);
System.out.println("Socket conectado!");
}
catch(Exception e)
{
System.out.println("Error al conectar\n"+e);
}
}
static void enviar(String cadena)
{
byte enviar[];
int longitud = cadena.length();
enviar = cadena.getBytes();
try
{
DatagramPacket dp = new DatagramPacket(enviar,longitud,ia,puerto);
ds.send(dp);
System.out.println(cadena);
}
catch(Exception e)
{
System.out.println("Error al enviar mensaje\n"+e);
}
}
static void recibir()
{
byte nada[] = maxCadena.getBytes();
DatagramPacket dp = new DatagramPacket(nada,maxCadena.length());
try
{
while (true)
{
ds.receive(dp);
if (dp!=null)
{
nada = dp.getData();
for (int m=0; m<=nada.length-1; m++)
System.out.print((char)nada[m]);
System.out.println();
break;
}
}
}
catch(Exception e)
{
System.out.println("Error al recibir mensaje\n"+e);
}
}
static void cerrar()
{
ds.close();
System.out.println("Socket cerrado!");
}
public static void main(String a[])
{
maxCadena = new String(" "+
" ");
String msg = "";
conectar();
usuario = a[0];
enviar(usuario + " Esta On-Line");
do{
recibir();
System.out.print("-> ");
msg = MeterDatos.readLine();
if(msg.equals("exit"))
break;
else
enviar(usuario + " Said: " + msg);
}while(true);
cerrar();
}
}