En este caso, puedo usar el ArrayList desde el if, pero en el else if me da error me dice que solo puede ser null
Código:
public static void main(String[] str) throws IOException { inetAddress = InetAddress.getByName("localhost"); TFTPProtocol tftp = new TFTPProtocol(); // creamos un buffer donde guardar los bytes del datagrampacket byte[] b = new byte[516]; DatagramSocket socket = new DatagramSocket(5000); int contador = 1; while (true) { DatagramPacket p = new DatagramPacket(b, b.length); socket.receive(p); // recibimos un paquete i extraemos datos byte[] data = p.getData(); ArrayList<DatagramPacket> envioPaquetes = null; if (tftp.catalogarPaquete(data) == RRQ) { System.out.println("server: llego un rrq!"); String fileName = tftp.desempaquetarRRQyWRQ(data); System.out.println("server:" +fileName); envioPaquetes = new ArrayList<DatagramPacket>(tftp.generarPaquetes(ruta+fileName)); System.out.println("server: enviaremos "+envioPaquetes.size()+" paquetes"); socket.send(envioPaquetes.get(contador)); envioPaquetes.remove(contador); contador++; } else if (tftp.catalogarPaquete(data) == WRQ) { System.out.println("server: llego un wrq!"); String fileName = tftp.desempaquetarRRQyWRQ(data); System.out.println(fileName); } else if (tftp.catalogarPaquete(data) == DATA) { System.out.println("server: llego un data!"); } else if (tftp.catalogarPaquete(data) == ACK_MSG) { System.out.println("server: llego un ack del Paquete " + contador + "!!!!"); socket.send(envioPaquetes.get(contador)); envioPaquetes.remove(contador); contador++; } else { } }