Por favor me pueden ayudar con esta practica UDP en Java

Iniciado por MaEdCo, 27 Octubre 2007, 18:25 PM

0 Miembros y 1 Visitante están viendo este tema.

MaEdCo

Pues eso, haber si alguien por favor seria tan amable de colaborarme con esta practica

http://www.zshare.net/download/4487693cad378a/

o decirme donde consigo informacion sobre sockets pero que este bien explicado como envio y recibo: desde un server y desde un cliente

gracias

ahh lo que he logrado hacer es simplemente paso de mensajes

Cliente

import java.net.*;
import java.io.*;

public class ClienteSaludoUDP{
public static void main(String args[]){
String mensaje;
if(args.length==1){
   mensaje=args[0];
   DatagramSocket socket=null;
   try{
    byte[]buffer_salida=mensaje.getBytes();
    InetAddress destino = InetAddress.getByName("localhost");
    DatagramPacket datagrama = new DatagramPacket(buffer_salida,buffer_salida.length,destino,9000);
    socket = new DatagramSocket();
    socket.send(datagrama); 
   } catch(IOException e){
      e.printStackTrace();
      } finally {
        if(socket != null) socket.close();
        }
  }
  else{
     System.out.println("USo:ClienteSaludoUDP mensaje");
  }
}
}   


Servidor

import java.net.*;
import java.io.*;

public class ServidorSaludoUDP
{
public static void main(String args[])
{
  try
    {
      DatagramSocket socket = new DatagramSocket(9000);
      byte[] buffer_entrada = new byte[255];
      byte[] datos;
      String mensaje;
      do
       {       
        DatagramPacket datagrama = new DatagramPacket(buffer_entrada,buffer_entrada.length);
        System.out.println("Servidor>))))))...");
        socket.receive(datagrama);
        System.out.println("Recibiendo Informacion: ");
        InetAddress hostDestino = datagrama.getAddress();
        int puertoDestino = datagrama.getPort();
        datos = datagrama.getData();
       

       
       
        mensaje = new String(datos,0,datos.length);
     


        System.out.println("Clente: "+hostDestino.getCanonicalHostName()+"|Puerto #"+puertoDestino+"|          Mensaje:"+mensaje.trim());
        for( int i=0; i < datagrama.getLength(); i++ )
        datos[i] = (byte)(' ');
        System.out.println("==============================================================");
      } while(true);
    }
   catch(IOException e)
   {e.printStackTrace();}
}

}

:-[ :xD :D

egyware

yo no se mucho sobre datagramas aun pero e usado TCP y para eso debes poner el socket a la escucha  :huh: creo acuerdate que tb los datagramas no todos llegan se pierden en el camino tb, bueno disculpa por no ayudarte pero tu problema me sirvio para saber como enviar un datagrama (ahorame queda solo hacerlo  :( at my house)

MaEdCo

Cita de: egyware en 29 Octubre 2007, 18:54 PM
yo no se mucho sobre datagramas aun pero e usado TCP y para eso debes poner el socket a la escucha  :huh: creo acuerdate que tb los datagramas no todos llegan se pierden en el camino tb, bueno disculpa por no ayudarte pero tu problema me sirvio para saber como enviar un datagrama (ahorame queda solo hacerlo  :( at my house)

pues muchas gracias por prestarme atención :), y si con TCP ya es mas facil, pero esta practica debe hacerse con datagramas UDP :-\ :-(

egyware

ola taba leyendo tu codigo y como para irte a la segura un poco por que no intentas cuando elijas la destinacion
tomar InetAddress.getLocalHost() porque por lo que tengo entendido que los datagramas no se verifican para donde van sino que solo se envian puede ser que tengas un problema de direccionamiento
y para mas seguro
en la parte servidor
en vez de usar
DatagramSocket socket = new DatagramSocket(9000);
usas
DatagramSocket socket = DatagramSocket(9000, InetAddress.getLocalHost());
asi te aseguras que el socket atrapado al socket (:huh:) del pc
nosep
Estaba leyendo el api de java porsia para que no creas que toy mintiendo jijij
esop xau
suerte