Necesito crear un segundo tiempo de espera de 10 en esta parte del códigoAdición de tiempo de espera a DatagramSocket - recibir()
DatagramPacket getack = new DatagramPacket (entrante, incoming.length);
socket.receive (getack);
lo necesito a la lista de los paquetes entrantes para 10s si se recibe un paquete antes de 10 segundos sería pase directamente a si la declaración en el caso de que llegue 10s sería saltar a otra cosa y volver a enviar el paquete. ¿Es esto posible y cómo podría hacer esto? Soy bastante nuevo en esto.
private static void sendDATA() {
outgoing = new byte[512]; // Empty array
try {
ByteBuffer sDATA = ByteBuffer.allocate(516);
// 512 - 2 byte opcode, 2 byte block #, 512 data
DatagramPacket data = new DatagramPacket(outgoing, outgoing.length, InetAddress.getByName(clientip), clientport);
InputStream fis = new FileInputStream(new File(FILE));
int a;
int block = 1;
while((a = fis.read(outgoing,0,512)) != -1)
{
data.setLength(a);
sDATA.put((byte)3);
sDATA.put((byte)block);
sDATA.put(outgoing);
socket.send(data);
while(true) {
DatagramPacket getack = new DatagramPacket(incoming, incoming.length);
socket.receive(getack);
if(incoming[0] == 3 && incoming[1] == block) {
break;
} else {
socket.send(data);
}
}
}
} catch (Exception e) {
}
}
Hm Miré a eso, pero me preguntaba si eso va a trabajar como yo quería decir. ¿Funcionará esto en el principio de que si se recibe algo antes de los 10s, salte a if y si se alcanza el tiempo de espera, salte a else? –
También pongo esto antes o después de getack = DatagramPacket(); –
@kellax He hecho una edición de mi publicación. Tienes que configurar el tiempo de espera antes de llamar a recibir. – sebastian