Write do socket travando?

Boa tarde galera, estou fazendo uma aplicação que envia bytes de um arquivo via socket, só que está ocorrendo o seguinte. O programa chama o primeiro .write, faz um loop e quando chama de novo trava nele. Segue o código:

                        FileInputStream fis = new FileInputStream(file);  
			BufferedInputStream bis = new BufferedInputStream(fis);
			OutputStream envia = usuario.getSocketFTP().getOutputStream();

			int tamanho = 102400; // buffer de 100KB    
			byte[] buffer = new byte[tamanho];    
			int lidos = -1;

			while ((lidos = fis.read(buffer, 0, tamanho)) != -1)
			{
				System.out.println(usuario.getSocketFTP().isConnected());
				envia.write(1);
				envia.write(buffer, 0, lidos);
				System.out.println("Transferi");
			}

Código do cliente:

                                fos = new FileOutputStream(arquivoBaixar);

				int tamanho = 102400; // buffer de 10KB
				int totalLido = 0;
				byte[] buffer = new byte[tamanho];

				while(socketFTP.getInputStream().read() == 1)
				{
					System.out.println("Esperando arquivo ler");
					totalLido = socketFTP.getInputStream().read(buffer, 0, tamanho);
					fos.write(buffer, 0, totalLido);
				}