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 {
}
}


