Java - Diferencias envío TCP y UDP

   
Vista:

Diferencias envío TCP y UDP

Publicado por katacio (1 intervención) el 24/07/2014 14:19:27
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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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());
        }
    }
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Diferencias envío TCP y UDP

Publicado por Tom (910 intervenciones) el 24/07/2014 17:03:05
Bueno, pero ¿ cual es el problema que Netbeans "te pone" ?

¿ Será que un array no tiene el método length() sino el atributo length ?

Y en ese caso, no será que no te funciona, sino que ni siquiera compila ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar