Он считывает байты из сокета, пока их не станет хотя бы 4.
Затем он проверяетпоследние два байта для магического числа, обозначающего конец изображения.
Затем он создает объект изображения из необработанных байтов.
Затем он рисует объект изображения на экране.
(и повторяет это до тех пор, пока continuteloop
не будет установлен в значение false.
Вы должны изучить DeMorgan'stherom. Позволяет переписать условие
while(!(count>4 && bytes[count-2]==(byte)-1 && bytes[count-1]==(byte)-39));
совпадает с
while ( count < 4 || bytes[count-2] != (byte)-1 || bytes[count-1] != (byte)-39 );
Что делает условие более понятным.
- четыре байта должны бытьпрочитайте
- второй байт должен быть 0xFF
- последний байт должен быть 0xD9
Если вы посмотрите формат спецификации изображения JPEG, вывидим, что 0xFFD9 - это «маркер JPEG», который указывает «конец потока изображения»
Итак, этот цикл эффективно считывает изображение JPEG из сокета, иотображает его до тех пор, пока для флага continuteloop
не будет установлено значение false.