Изображения - это мелочи, и вам нужно иметь полный набор байтов, составляющих изображение, чтобы восстановить изображение.
Я бы поспорил, что проблема в том, что когдаКлиентский объект получает данные, он получает их частями, состоящими из частичных изображений, а не всего изображения одновременно.Это может привести к сбою строки, в которой написано
pictureBox1.Image = new Bitmap(ms);
, поскольку у нее просто нет байтов всего изображения.
Альтернативы
Вместо того, чтобы сервер отправлял изображения клиенту, возможно, другим подходом было бы заставить клиента извлекать изображения с сервера.
Используйте существующий механизм потоковой передачи.Я лично считаю, что потоковое видео вручную из C # может быть более сложным, чем вы предполагаете, и я бы смиренно рекомендовал использовать существующий компонент или приложение для потоковой передачи видео, а не писать свое собственное.Уже есть так много разных вариантов (WMV, Flash и еще сотня), что вы изобретаете колесо, которое действительно не нужно заново изобретать.