Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/03/2016, 05:13
tec01
 
Fecha de Ingreso: noviembre-2014
Mensajes: 17
Antigüedad: 7 años, 9 meses
Puntos: 0
Duda conceptual sobre declaraciones de objetos

Hola, me pasa muy seguido que tengo errores al acceder a objetos declarados en la misma clase.
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 {

			}

		}