/**
* Calculates distance in RGB color space with Euklidian distance between each component
*
* @param c1 {@link Color} one
* @param c2 {@link Color} two
* @return double result of comparison. Max possible distance is 225.0. Minimum 0.0
*/
public static double colorDistance( Color c1, Color c2 )
{
double rDist = c1.getRed() - c2.getRed();
double gDist = c1.getGreen() - c2.getGreen();
double bDist = c1.getBlue() - c2.getBlue();
return Math.sqrt( rDist * rDist + gDist * gDist + bDist * bDist )/* / SQRT_3*/;
}//end color distance method
Т.е. клиент получает кусками, а server поддаёт как может. Закончится всё только когда сервер закончит и клиент это узнает. И тогда он сможет открыть полученный ZIP целиком, наконец.
Деталей не помню, давно занимался. Но так делал и оно работало. Такое нужно, когда не знаешь пределы длины ZIP файла, формируемого на ходу из результатов запроса по произвольной выборке отчётов, скажем, или каких-от квитанций в XML или любом другом виде.
Спроси deepseek - он такие короткие но сочные вопросы щёлкает на раз.