Buscar
Social
Ofertas laborales ES

Foro sobre Java EE > Envio TCP ok pero problema al cambiar código para envio UDP

Estoy programando con NetBeans y hasta ahora me voy apañando poco a poco pero tengo un problema con los sockets de java y es que el envío mediante TCP lo hago correctamente, pero ahora quiero hacerlo con UDP y leyendo las diferencias he modificado el código pero me encuentro con que no me funciona.

El código de envio correcto en TCP es el siguiente:

import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class EchoSender
{

public EchoSender()
{
}

public static void sendEcho(String destination, int port, String sentence)
{
String echo = (new StringBuilder()).append(sentence).append("\n\r").toString();
Log.info((new StringBuilder()).append("Enviando echo: ").append(echo).toString());
Log.info((new StringBuilder()).append("destination: ").append(destination).toString());
Log.info((new StringBuilder()).append("port: ").append(port).toString());
try
{
Socket socket = new Socket(destination, port);
OutputStream os = socket.getOutputStream();
os.write(echo.getBytes());
os.close();
socket.close();
}
catch(UnknownHostException e)
{
Log.error((new StringBuilder()).append("No se puede encontrar el host para el echo: ").append(destination).append(" en el puerto: ").append(port).toString());
}
catch(IOException e)
{
Log.error((new StringBuilder()).append("Ha habido un problema en el envio del echo: ").append(destination).append(" en el puerto: ").append(port).toString());
}
}
}

____________________________________

Este lo he modificado por el siguiente que no me funciona y quisiera saber el por qué (si alguien fuese tan amable de ayudarme). El problema en NetBeans me pone que está en "paquete.length". Un saludo y gracias de antemano:

import java.io.IOException;
import java.net.UnknownHostException;
import java.net.DatagramSocket;
import java.net.DatagramPacket;

public class EchoSender
{

public EchoSender()
{
}

public static void sendEcho(String destination, int port, String sentence)
{
String echo = (new StringBuilder()).append(sentence).append("\n\r").toString();
Log.info((new StringBuilder()).append("Enviando echo: ").append(echo).toString());
Log.info((new StringBuilder()).append("destination: ").append(destination).toString());
Log.info((new StringBuilder()).append("port: ").append(port).toString());
try
{
DatagramSocket socket = new DatagramSocket();
byte[ ] paquete = echo.getBytes( );
DatagramPacket os = new DatagramPacket(paquete, paquete.length(), destination, port);
socket.send(os);
socket.close();
}
catch(UnknownHostException e)
{
Log.error((new StringBuilder()).append("No se puede encontrar el host para el echo: ").append(destination).append(" en el puerto: ").append(port).toString());
}
catch(IOException e)
{
Log.error((new StringBuilder()).append("Ha habido un problema en el envio del echo: ").append(destination).append(" en el puerto: ").append(port).toString());
}
}
}

julio 24, 2014 | Unregistered CommenterCatherina butatana

Guenas.

Estas llamando el metodo paquete.length() en lugar de la variable paquete.length

Un saludo

agosto 5, 2014 | Unregistered CommenterPaposo