Ver Mensaje Individual
  #11 (permalink)  
Antiguo 22/04/2005, 08:42
Avatar de stock
stock
 
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 20 años, 5 meses
Puntos: 53
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=0m<=nada.length-1m++)
            
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();
  }